hibernate学习笔记(一)

2014-11-24 08:32:02 · 作者: · 浏览: 0

其实hibernate完全是建立在JDBC的基础上的。

那为什么还要用hibernate呢?

原因:使用JDBC查询有太多重复性的转换工作,连接数据库的信息放在程序代码中,一旦需要修改数据库的信息时,必须重新修改,重新编译。不利于程序的维护。

hibernate的优势:

概括的说:hibernate是一个优秀的java持久化层解决方案。是当今主流的对象-关系映射工具。

1.松散耦合,hibernate既不会渗透到上层域模型中。也不会渗透到下层数据模型中软件开发人员可以独立设计域模型。不必强迫遵守任何规范

2.数据库设计人员可以独立设计数据库。不必强迫遵守任何规范

3.对象-关系映射不依赖于任何程序代码。如果需要修改对象-关系映射。只需修改xml文件。不需要修改任何程序。提高了软件的灵活性,复用性,并且使维护更加方便。

持久化和ORM:

狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作(持久化就是将有用的数据以某种技术保存起来,将来可以再次取出来应用,数据库技术,将内存数据一文件的形式保存在永久介质中(磁盘等)都是持久化的例子.)。

ORM:Object Relational Mapping 即对象关系映射。在编写程序时,以面向对象的方式处理数据,保存数据时,却以关系型数据库的方式存储,所以我们需要这个对象关系映射这个机制,将需要保存的对象与关系数据库表建立联系。简单的说:ORM就是利用描述对象和数据库之间的映射,自动的把java应用程序中的对象持久化到关系数据库中的表。

大概了解后:我们开始一个hibernate的基础小程序(CRUD)

首先导入jar包。前期工作不多说了。

首先创建主配置文件:hibernate.cfg.xml文件:这个文件是用于配置数据库连接的信息和hibernate运行时所需要的各种属性,该文件一定是放在src目录下的。而且命名一定是hibernate.cfg.xml。

[java]

jdbc:mysql://localhost:3306/hibernate
root
root
com.mysql.jdbc.Driver

org.hibernate.dialect.MySQL5Dialect

true


然后在创建持久化映射文件:命名规范:类名.hbm.xml文件。一般都是放在实体类的同级目录下的。

[java] view plaincopy











然后就是POJO类了。
[java]
public UserInfo() {
super();
// TODO Auto-generated constructor stub
}
private Integer userId;//用户id
private String userName;//用户名
private String userPwd;//密码
private Integer userAge;//年龄
private Date userBirthday;//出生日期

public UserInfo(String userName, String userPwd, Integer userAge,
Date userBirthday) {
super();
this.userName = userName;
this.userPwd = userPwd;
this.userAge = userAge;
this.userBirthday = userBirthday;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public Date getUserBirthday() {
return userBirthday;
}
public void setUserBirthday(Date userBirthday) {
this.userBirthday = userBirthday;
}
在就是:获取Session实例对象:

[java]
public static SessionFactory sessionfactory;
static{
//创建会话工厂
sessionfactory=new Configuration().configure().buildSessionFactory();
}
public static Session getSession(){//获取session对象
Session session=sessionfactory.openSession();
return session;
}
public static void closeSession(Session session){//关闭session对象
if(session!=null){
session.close();
}
}
最后就可以对用户实行CRUD了。

先做一个save();

[java]
Session session=HibernateUtil.getSession();//获取session
Transaction tx=session.beginTransaction();//开启事物
try {
Userinfo user=new Userinfo("zhangsan", "123", 18, new Date());
session.save(user);//保存对象
tx.commit();//提交事物
} catch (HibernateException e) {
if(tx!=null)
tx.rollback();//事物回滚