Hibernate的手动配置+手动增删改数据

hibernate的总结构预览:



(PS:1注意在serivce的包中全部是空的.2在pojo类中必须有一个无参的构造方法,这里我删除了)

package com.dqd.domain;
import java.util.Date;

//该pojo按照规范序列化,目的是可以唯一的标识对象
/**
 * com.dqd.domain/Employee.java
 * @author Dqd
 */
public class Employee implements java.io.Serializable{
  private static final long serivalVersionUID = 1L;
  private Integer eId;
  private String eName;
  private String eEmail;
  private Date ehiredate;
	public Integer geteId() {
		return eId;
	}
	public void seteId(Integer eId) {
		this.eId = eId;
	}
	public String geteName() {
		return eName;
	}
	public void seteName(String eName) {
		this.eName = eName;
	}
	public String geteEmail() {
		return eEmail;
	}
	public void seteEmail(String eEmail) {
		this.eEmail = eEmail;
	}
	public Date getEhiredate() {
		return ehiredate;
	}
	public void setEhiredate(Date ehiredate) {
		this.ehiredate = ehiredate;
	}
}



<?xml version="1.0" encoding="utf-8"?>
<!-- dtd文件的查找 -->
<!-- 
/**
 * com.dqd.domain/Employee.hbm.xml
 * @author Dqd
 */

 -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.dqd.domain">
	<class name="Employee" table="employee">
		<!-- id元素用于指定主键 -->
		<!--  <id name="eId" column="eId"  type="java.lang.Integer">
			 该元素用于指定主键的生成策略 
			<generator class="sequence">
				<param name="sequence">emp_seq</param>
			</generator>
			针对于oreacl数据库的语句
		</id>-->
		<id name="eId" column="eId" type="java.lang.Integer">
			<generator class="increment">
			</generator>
		</id>
		<!-- 其他属性的配置 -->
		<property name="eName" type="java.lang.String">
			<column name="eName" not-null="false"/>
		</property>
		
		<property name="eEmail"  type="java.lang.String" >
			<column name="eEmail" not-null="false"></column>
		</property>
		
		<property name="ehiredate"  type="java.util.Date">
		<column name="ehiredate" not-null="false"></column>
		</property>
	</class>
</hibernate-mapping>





package com.dqd.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
//一个单例
/**
 * com.dqd.util/MySessionFactory.java
 * @author Dqd
 *
 */
final public class MySessionFactory {
	private MySessionFactory(){
		
	}
	private static SessionFactory sessionFactory = null;
	private static ServiceRegistry serviceRegistry = null;
	private static Configuration configuration =null;
	static{
	    configuration = new Configuration().configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();  
	    sessionFactory = configuration.buildSessionFactory(serviceRegistry);  
	}
	public static  SessionFactory getSessionFactory(){
		return sessionFactory;
	}
	
}



package com.dqd.view;
import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import com.dqd.domain.Employee;
import com.dqd.util.MySessionFactory;
/**
 * com.dqd.view/TestMain.java
 * @author Dqd
 *
 */
public class TestMain {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1创建Configuation对象2.创建会话工厂3.创建会话4.事物提交
		//我们用hbm完成增删改查
		//A.增加用户addEmployee();
		//B.修改用户changeEmployee();
		//C.删除delEmployee();
		
		
		changeEmployee();//发生异常的回滚(其他几个方法都应当效仿此方法)
	}

	public static void delEmployee() {
		Session session = MySessionFactory.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		Employee emp =(Employee) session.load(Employee.class, 2);
		session.delete(emp);
		transaction.commit();
		session.close();
	}

	public static void changeEmployee() {
		
		Session session =  MySessionFactory.getSessionFactory().openSession();
		Transaction transaction = null;
			//获取要修改的用户,load通过主键获取对象实例
		try{
			transaction = session.beginTransaction();
			Employee emp = (Employee)session.load(Employee.class,1);
			emp.seteName("Grit_ICPC");
			int i = 9/0;
			transaction.commit(); 
			
			
		}catch(Exception e){
			if(transaction!=null){
				transaction.rollback();
			}
			throw new RuntimeException(e.getMessage());
		}finally{
			if( (session!=null)&&(session.isOpen()) ){
				session.close();
			}
		}
	}

	public static void addEmployee() {
		//去找配置的文件,完成初始化
		Configuration configuration = new Configuration().configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();  
	    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);    
		//SessionFactory sessionFactory = configuration.buildSessionFactory();
		
	    //穿件session相当于jdbc的connection,用于和数据库的会话
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction(); 
		Employee emp = new Employee();
		emp.seteName("dqd");
		emp.seteEmail("dqd@qq.com");
		emp.setEhiredate(new Date());
		//持久化的体现(保存到数据库中)
		//对应于insert
		session.save(emp);
		transaction.commit(); 
		session.close();
	}
}





<?xml version="1.0" encoding="UTF-8"?>

<!-- 
hibernate.cfg.xml
 -->
<!DOCTYPE hibernate-configuration PUBLIC  
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>
	<session-factory>
		<!-- 配置使用driver -->
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.username">root</property>
		<property name="connection.password"></property>
		<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
		<property name=""></property>
		<!-- 告诉hbm链接的数据库 -->
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="show_sql">true</property>
		<!-- hibernate自动的创建表 ,如果没有就创建一个-->
		<property name="hbm2ddl.auto">update</property>
		
		<!-- 管理对象关系映射文件 -->
		<mapping resource="com/dqd/domain/Employee.hbm.xml"/>
	</session-factory>
</hibernate-configuration>




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值