hibernate初步配置
三大框架struts2,hibernate,spring,hibernate是orm框架中,持久化数据库最方便的持久化框架之一....
步骤一:
去hibernate官网下载有关hibernate的版本http://hibernate.org/orm/,目前下载的hibernate4.3.6
然后cope出版本中的require部分的lib包..外加log4j的日志包和数据区的连接包mysql-connector-java-5.1.26.jar
步骤二
在src下面创建hibernate.cfg.xml文件
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--数据库序言以及连接数据库的驱动用户名密码等 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<!-- 通过实体类映射数据库 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 打印sql语句 -->
<property name="show_sql">true</property>
<!--实体类与数据库表字段的映射 -->
<mapping resource="com/person/zh/pojo/User.hbm.xml"/>
<!-- <class-cache class="org.hibernate.test.legacy.Simple" region="Simple" usage="read-write"/> -->
</session-factory>
</hibernate-configuration>
其中hibernate.hbm2ddl.auto
它包含4个属性:
在最新的版本中前面2种创建sessionfactory的方式都被弃用了.
- create : 会根据你的model类来生成表,但是每次运行都会删除上一次的表,重新生成表,哪怕2次没有任何改变
- create-drop : 根据model类生成表,但是sessionFactory一关闭,表就自动删除
- update : 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行
- validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值
步骤三
创建实体类对象
package com.person.zh.pojo;
import java.util.Date;
public class User {
public User() {
}
private int userId;
private String userName;
private String userPasswd;
private Date birthDay ;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPasswd() {
return userPasswd;
}
public void setUserPasswd(String userPasswd) {
this.userPasswd = userPasswd;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
}
步骤四
创建项对应的hbm.xml文件User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--hbm.xml所在的包路劲 -->
<hibernate-mapping package="com.person.zh.pojo">
<!--类名,和对应的表名 -->
<class name="User" table="t_user">
<id name="userId">
<generator class="native"/>
</id>
<property name="userName" />
<property name="userPasswd"/>
<property name="birthDay" type="timestamp"/>
</class>
</hibernate-mapping>
步骤五
写一个junit测试类
package com.person.zh.test;
import java.util.Date;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
import com.person.zh.pojo.User;
public class TestHibernate {
//hibernate3版本创建sessionfactory
@Test
public void testHibernate3(){
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session=null;
try {
session=sessionFactory.openSession();
session.getTransaction().begin();
User user=new User();
user.setBirthDay(new Date());
user.setUserName("zhangsan");
user.setUserPasswd("123456");
session.save(user);
session.getTransaction().commit();
} catch (HibernateException e) {
session.getTransaction().rollback();
e.printStackTrace();
System.out.println(e);
}finally{
session.close();
}
}
//4.0版本创建sessionfactory
@Test
public void testHibernate40(){
Configuration configuration = new Configuration();
configuration.configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sessionfactory = configuration.buildSessionFactory(serviceRegistry);
Session session=null;
try {
session=sessionfactory.openSession();
session.getTransaction().begin();
User user=new User();
user.setBirthDay(new Date());
user.setUserName("zhangsan");
user.setUserPasswd("123456");
session.save(user);
session.getTransaction().commit();
} catch (HibernateException e) {
session.getTransaction().rollback();
e.printStackTrace();
System.out.println(e);
}finally{
session.close();
}
}
//4.3.6最新版本的创建sessionfactory
@Test
public void testHibernate43(){
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
StandardServiceRegistryImpl registry = (StandardServiceRegistryImpl) builder.build();
SessionFactory sessionFactory = configuration.buildSessionFactory(registry);
Session session=null;
try {
session=sessionFactory.openSession();
session.getTransaction().begin();
User user=new User();
user.setBirthDay(new Date());
user.setUserName("zhangsan");
user.setUserPasswd("123456");
session.save(user);
session.getTransaction().commit();
} catch (HibernateException e) {
session.getTransaction().rollback();
e.printStackTrace();
System.out.println(e);
}finally{
session.close();
}
}
}
在最新的版本中前面2种创建sessionfactory的方式都被弃用了.