hibernate初学之初解篇一

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
	@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的方式都被弃用了.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值