Hibernate环境搭建跟配置

hibernate是一个ORM(对象关系映射)框架,将实体类对象和数据库数据关系做了映射,使我们操作数据库时,方便简单。hibernate对JDBC重复的操作做了封装,而且使用hibernate开发的项目,不管数据库怎么改变,都不用修改代码,是需要将配置文件中的信息修改为对应的数据库信息即可。

下面示例简单介绍下hibernate的环境搭建跟配置。

hibernate资源下载地址:http://hibernate.org/orm/downloads/

首先看下项目整体架构:


1、新建java项目
2、导入相关jar包
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.11.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
mysql-connector-java-5.1.2-beta-bin.jar
3、编写相关配置文件hibernate.cfg.xml文件,
复制hibernate-release-4.3.11.Final\project\etc\hibernate.cfg.xml文件,修改内容,放到项目中src目录下:
<hibernate-configuration>
<session-factory>
	<!-- 配置数据库连接信息 -->
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="connection.url">jdbc:mysql:///hibernatetest</property>
	<property name="connection.username">root</property>
	<property name="connection.password">root</property>
	<!-- 数据库方言 -->
	<property name="dialect">
		org.hibernate.dialect.MySQL5Dialect
	</property>
	<mapping resource="com/test/pojo/User.hbm.xml" />
</session-factory>
</hibernate-configuration>

4、创建数据库表以及对应的pojo对象
public class User {
	private int id;
	private String name;
	private String pwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
}
5、编辑*.hbm.xml文件,文件名一般为pojo类的名称,如User.hbm.xml,放在pojo类所在的包下
<hibernate-mapping>
	<class name="com.test.pojo.User" table="user">
		<id name="id">
		<!-- 主键生成策略,设置为自增 -->
			<generator class="native"></generator>
		</id>
		<!-- 实体类属性 -->
		<property name="name"/>
		<property name="pwd"/>
	</class>
</hibernate-mapping>

6、测试(检查下是否将*.hbm.xml文件加入到hibernate.cfg.xml文件中,若无先将文件加入进去)

public static void main(String[] args) {
		//1、新建Configuration对象
		Configuration cfg=new Configuration().configure();
		//2、通过Configuration创建SessionFactory对象
		ServiceRegistry registry=new StandardServiceRegistryBuilder()
		.applySettings(cfg.getProperties())
		.build();
		SessionFactory sf=cfg.buildSessionFactory(registry);
		//3、通过SessionFactory得到session
		Session session=sf.openSession();
		//4、通过session对象得带Transaction对象,开启事务
		Transaction tx=session.beginTransaction();
		//5、保存数据
		User user=new User();
		user.setName("admin张");
		user.setPwd("1111");
		session.save(user);
		//6、提交事务
		tx.commit();
		//7、关闭session
		session.close();
	}

Configuration管理读取配置文件。单例模式,通过Configuration来创建SessionFactory对象。当hibernate的核心配置文件名不是hibernate.cfg.xml时,获取方式为:
Configuration cfg=new Configuration().configure("*.cfg.xml");//与自定义文件名一致
SessionFactory对象:是一个session工厂,是一个重量级对象。在一个应用中最好也是单例。是一个
线程安全的。属于进阶级别的对象。
Session对象:使用hibernate进行数据库操作,主要使用Session。Session可以理解为对Connection对象的一个包装Session对象中提供了对数据库的crud操作。Session是一个线程安全的对象。生命周期非常短暂,一般和事务一一对应。Session又称为hibernate中的一级缓存。Session又是Transaction对象的工厂。
Transaction对象:事务管理对象,通过Session来获取到该对象。包括事务的开启,事务的提交,事物的回滚。
通过Session对象获取Transaction对象有两种方式:
一、Transaction tx=session.beginTransaction();
二、Transaction tx=session.getTransaction();
    tx.begin();
7、事务和异常处理:
public static void main(String[] args) {
		Configuration cfg=null;
		SessionFactory sf=null;
		Session session=null;
		Transaction tran=null;
		try{
			cfg=new Configuration().configure();
			ServiceRegistry registry=new StandardServiceRegistryBuilder()
			.applySettings(cfg.getProperties())
			.build();
			sf=cfg.buildSessionFactory(registry);
			session=sf.openSession();
			tran=session.beginTransaction();
			User u=(User) session.get(User.class, 1);
			System.out.println("name="+u.getName());
			//6、提交事务
			tran.commit();
		}catch(Exception e){
			e.printStackTrace();
			//回滚事务
			tran.rollback();
		}finally{
			//7、关闭session
			if(session!=null && session.isOpen())
				session.close();
		}
		
	}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值