Hibernate的第一个程序

    Hibernate 是一个开放源代码的对象关系映射(Obeject/Relation Mapping)框架 ,它对JDBC进行了非常轻量级的对象封装。支持现大部分常用的关系型数据库,使得对数据库表的CRUD操作变为OOP的操作。这样在开发效率和可拓展性上方便不少。

    环境准备:官网Hibernate 下载Hibernate ORM 在工程上搭载好核心jar包。

    资源: hibernatezh_CN 、  hibernate annotation references

 

Hibernate 有2方式来实现O/R Mapping,一种是xml(Hibernate风格)方式,另一种是Annotation(实现JPA)方式

 

以下内容可以参考Hibernate官网提供的Example

 

xml方式:

 建立domain类

 

 

package com.yk.domain;

import javax.persistence.Entity;
import javax.persistence.Id;

/**
 * domain user类
 * 
 * @author YangKang
 * 
 */ 
public class User {

	private int id;

	private String name;

	private String password;

	private String date;
 
	 
	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 getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}
}

 

建立User映射文件 User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<!-- 指定要持久化的类com.feytuo.education.domain.UserBean 与定义的数据库 表edu_user的对应关系 -->
	<class name="com.yk.domain.User" table="user">
		<id name="id" type="java.lang.Integer" column="id">
			<generator class="identity" />
		</id>
		<property name="name" type="java.lang.String"></property>
		<property name="password" type="java.lang.String"></property>
		<property name="date" type="java.lang.String"></property>
	</class> 
</hibernate-mapping>

 

将映射文件加入到hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC 
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!-- 连接mySql数据库的驱动 -->
		<property name="hibernate.connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<!-- 连接MySql数据库 -->
		<property name="hibernate.connection.url">
			jdbc:mysql://localhost:3306/test
		</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">qwertyuiopasdfghjkl</property>
		<!-- 设置dialect -->
		<property name="hibernate.dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<!--数据库连接池的大小 -->
		<property name="hibernate.connection.pool.size">1</property>
		<!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true -->
		<property name="hibernate.show_sql">true</property>
		<property name="hbm2ddl.auto">update</property>

		<!-- xml方式 -->
		<mapping resource="com/yk/domain/User.hbm.xml" />
		
		<!-- annotation 方式 -->
		<!-- <mapping class="com/yk/domain/User.java" />  -->

	</session-factory>
</hibernate-configuration>

 

Annotation 方式:

 建立domain类引入JPA(Java Persistence API) annotation

package com.yk.domain;

import javax.persistence.Entity;
import javax.persistence.Id;

/**
 * domain user类
 * 
 * @author YangKang
 * 
 */
@Entity
public class User {

	private int id;

	private String name;

	private String password;

	private String date;
 
	@Id
	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 getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}
}

 

在此不必再写映射的xml文件了,因为Entity替你完成映射了,默认数据库字段与属性名相同。

 但加入到hibernate.cfg.xml里的不是xml文件了,而是domain的CLASS

以上为例,<mapping class="com/yk/domain/User.java" />

 

CRUD测试(以添加数据为例)

package com.yk.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import com.yk.domain.User;

public class UserDAO { 
	public static void main(String args[]) {
		// 第一步:读取Hibernate的配置文件 hibernamte.cfg.xml文件
		Configuration config = new Configuration().configure();
		// 第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
		StandardServiceRegistryBuilder regbulider = new StandardServiceRegistryBuilder()
				.applySettings(config.getProperties());
		// 创建注册服务
		ServiceRegistry sry = regbulider.build();
		// 第三步:创建会话工厂
		SessionFactory factory = config.buildSessionFactory(sry);

		// 取得session
		Session session = null;
		try {
			session = factory.openSession();

			session.beginTransaction();
			User user = new User();
			user.setId(1);
			user.setName("张三");
			user.setPassword("123");
			user.setDate("20131014");
			// 保存User对象
			session.save(user);

			// 提交事务
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 先从创建一个会话(Session),之后就可以对Session 进行save,update,delete,load,get等操作。

 

我发现在之前的博客上,伙伴们对附在在CSDN的下载资源挺感兴趣的,附上下载地址

http://download.csdn.net/detail/u011458382/7411443

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值