hibernate初学之初解篇一

来源:互联网 发布:sqlserver 不允许更改 编辑:程序博客网 时间:2024/05/23 01:42

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个属性: 
  • 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@Testpublic  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@Testpublic  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@Testpublic  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的方式都被弃用了.





0 0