核心步骤:
1) 导入jar包
2) 创建hibernate.cfg.xml配置文件
3) 创建对象类及类和表的映射文件
4) 操作数据
hibernate项目结构图(当前版本为4.3.5),(我建的是一个web project,当然也可以建java project或是maven项目)
1、将hibernate的jar包导入lib下
必须要导入的jar包有:
lib\required文件夹下
数据库方面的jar包有:
mysql-connector-java-5.1.7-bin.jar(mysql)
ojdbc6.jar(oracle)
连接池(可选):
lib\optional\c3p0文件夹下
2、在项目的src下新建hibernate.cfg.xml该文件为hibernate的主要配置,文件名默认是hibernate.cfg.xml,也可以改用其他,在调用时要注意
/p>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
jdbc:oracle:thin:@192.168.8.10:1521:ora9i2
oracle.jdbc.driver.OracleDriver
ZC
ZC
org.hibernate.dialect.Oracle9Dialect
thread
true
true
3、新建与数据库中表对应的POJO类(下面以User为例)
packagepo;public classUser {private Integer id; //userID
private String loginName; //登录名
private String password; //密码
private String name; //姓名
publicInteger getId() {returnid;
}public voidsetId(Integer id) {this.id =id;
}publicString getLoginName() {returnloginName;
}public voidsetLoginName(String loginName) {this.loginName =loginName;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}
}
4、新建映射文件User.hbm.xml,映射文件默认与POJO类放在一起;命名规则为类名.hbm.xml
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
t_id
5、向数据库中插入、删除、更新、查询数据
5.1 工具类
public classHibernateUtil {private staticConfiguration conf;private staticSessionFactory factory;//conf只需要加載一次就可以了,如果放入openSession方法中效率會很低
static{
conf=newConfiguration().configure();//以前的版本获取sessionFactory的方式//factory = conf.buildSessionFactory();//现在获取的方式
factory = conf.buildSessionFactory(newStandardServiceRegistryBuilder().applySettings(conf.getProperties()).build());
}/*** 每个用户对应一个session,但SessionFactory是共享的
*@return
*/
public staticSession openSession(){returnfactory.openSession();
}
}
5.2 测试类
public classTestHibernate {/*** 将一个对象存入数据库*/
//@Test
public voidtest1(){//1 创建一个User对象
User user = newUser();
user.setLoginName("hibernate");
user.setName("man");
user.setPassword("12345");
Session session=HibernateUtil.openSession();//6.获取事务
Transaction tx =session.getTransaction();//6.1 开启事务
tx.begin();//6.2插入数据
session.save(user);//6.3提交事务
tx.commit();//7.关闭session
session.close();
}/***将数据库中某个值删除*/
//@Test
public voidtest2(){
Session session=HibernateUtil.openSession();//1 创建一个User对象
User user = newUser();
user.setId(1);//2获取并开启事务
Transaction tx =session.beginTransaction();//3删除用户
session.delete(user);//4提交事务并关闭session
tx.commit();
session.close();
}/*** 更新数据*/
//@Test
public voidtest3(){
User user= newUser();
user.setId(3);
user.setLoginName("struts2");
user.setName("women");
user.setPassword("123456");
Session session=HibernateUtil.openSession();
Transaction tx=session.beginTransaction();
session.update(user);
tx.commit();
session.close();
}/*** 查询*/
//@Test
public voidtest4(){
Session session=HibernateUtil.openSession();//HQL--Hibernate提供的是面向对象的查询语句注意User要与类User名对应
Query query = session.createQuery("from User");
@SuppressWarnings("unchecked")
List users =query.list();for(User user : users) {
System.out.println(
user.getId()+","+user.getLoginName()+","+user.getPassword()+","+user.getName());
}
session.close();
}
}
6、SQL脚本文件
oracle
--创建序列
createsequence t_id
startwith 1incrementby 1;--创建user表
create tablet_user(
t_idnumber(11) not null,
t_login_namevarchar(50),
t_passwordvarchar(50),
t_namevarchar(100),primary key(t_id)
);
mysql
/**
* 在MYSQL中注释是#或/***/,在oracle中是--
*/#如果表存在就删除表drop table if existst_user;
#新建user表create tablet_user(
t_idint(11) not nullauto_increment,
t_login_namevarchar(50) default null,
t_passwordvarchar(50) default null,
t_namevarchar(100) default null,primary key(t_id)
)ENGINE=InnoDB;