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




	
	
		
			
		
		
		
		
	 

 

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





	
		
		
			com.mysql.jdbc.Driver
		
		
		
			jdbc:mysql://localhost:3306/test
		
		root
		qwertyuiopasdfghjkl
		
		
			org.hibernate.dialect.MySQLDialect
		
		
		1
		
		true
		update

		
		
		
		
		

	

 

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

以上为例,

 

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

 

你可能感兴趣的:(Hibernate,O/R,Mapping,Database,JDBC,J2EE)