hibernate需要配置的xml

 
  
  
  
  
 
   

Customer.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><br/>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 建立持久化对象与数据库表的关联关系 -->
<hibernate-mapping>
	<!-- 
	class:指定类的路径和表的名称的关联
	   * name:持久化类的名称对应的全路径
	   * table:表示对应数据库表的名称
	 -->
	<class name="cn.aypak.a_primer.Customer" table="a_customer">
		<!-- 
			id:主键(OID)
			  * name:持久化类中属性
			  * type:表示hibernate的数据类型,表示java的数据类型在连接sql的数据类型的一个桥梁
			  * column:数据库对应的字段列
			       * name:数据库表中字段名称
			  * generator:主键的生成策略
			       * class:指定主键按照哪种生成策略执行(本例:increment表示自增长)
		 -->
		<id name="id" type="integer">
			<column name="id"></column>
			<generator class="increment"></generator>
		</id>
		<!-- 
			property:持久化对象中的属性与表中的字段进行关联
			   * name:持久化类中属性
			   * type:表示hibernate的数据类型,表示java的数据类型在连接sql的数据类型的一个桥梁
			   * column:数据库对应的字段列
			       * name:数据库表中字段名称
		 -->
		<property name="name" type="string">
			<column name="name"></column>
		</property>
		<property name="age" type="integer">
			<column name="age"></column>
		</property>
		<property name="des" type="string">
			<column name="des"></column>
		</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>
		<property name="hibernate.connection.url">jdbc:mysql://192.168.137.244:3306/aypak?useUnicode=true&amp;characterEncoding=utf8</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!-- 配置hibernate的方言,通知hibernate要连接哪种数据库(mysql),将该数据库类型识别成hibernate能够识别的类型 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<!-- 是否通过配置文件(hbm.xml)的配置生成数据库的表
		  update:当表不存在的时候,自动创建表,并往表中追加数据
		         当表存在的时候,不会删除表再创建表,而是直接向表中追加数据
		  create:每次在操作数据库(CRUD)的时候,都会先删除表,在创建表,项目不能使用,这样历史数据将不被保存
		  none:不能自动创建表,每次操作数据库的时候,直接将数据保存到数据库,历史数据不丢失
		 -->
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!-- 是否在开发的过程中显示sql语句,默认是false -->
		<property name="hibernate.show_sql">true</property>
		<!-- 是否对显示的sql语句进行格式化,默认是false -->
		<property name="hibernate.format_sql">false</property>
		
		<!-- 等价于configuration.addClass(Customer.class); -->
		<!-- <mapping resource="cn/aypak/a_primer/Customer.hbm.xml"/>-->
	</session-factory>
</hibernate-configuration>

实例:CRUD

package cn.aypak.a_primer;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class App {
	
	private static SessionFactory sf = null;
	
	static{
		Configuration configuration = new Configuration();
		configuration.configure("cn/aypak/a_primer/hibernate.cfg.xml");
		configuration.addClass(Customer.class);
		sf = configuration.buildSessionFactory();
	}
	
	/**新增*/
	@Test 
	public void testInsertCustomer(){
		Session s = sf.openSession();
		Transaction tr = s.beginTransaction();
		
		Customer c = new Customer();
		c.setName("小三");
		c.setAge(18);
		c.setDes("专业的");
		s.save(c);
		
		tr.commit();
		s.close();
	}
	
	/**通过id进行修改*/
	@Test 
	public void testUpdateCustomer(){
		Session s = sf.openSession();
		Transaction tr = s.beginTransaction();
		
		Customer c = new Customer();
		c.setId(3);
		c.setName("小四");
		s.update(c);
		
		tr.commit();
		s.close();
	}
	
	/**通过id删除客户信息*/
	@Test 
	public void testDeleteCustomer(){
		Session s = sf.openSession();
		Transaction tr = s.beginTransaction();
		
		Customer c = new Customer();
		c.setId(2);
		s.delete(c);
		
		tr.commit();
		s.close();
	}
	
	/**通过id查询客户信息*/
	@Test 
	public void testQueryCustomer(){
		Session s = sf.openSession();
		Transaction tr = s.beginTransaction();
		
		Customer c = (Customer) s.get(Customer.class, 1);
//		Customer c = (Customer) s.load(Customer.class, 1);
		System.out.println(c.getName()+"    "+c.getAge()+"     "+c.getDes());
		
		tr.commit();
		s.close();
	}
	/**查询所有的客户信息*/
	@Test 
	public void testQueryAllCustomer(){
		Session s = sf.openSession();
		Transaction tr = s.beginTransaction();
		
		/**
		 * s.createQuery("HQL语句"):使用HQL语句查询数据库,返回Query对象
		 *      SQL语句:针对数据库、数据库表、数据库字段
		 *      HQL语句:针对持久化对象、持久化对象的属性
		 */
		Query query = s.createQuery("from Customer");
		List<Customer> list = query.list();
		for(Customer c:list){
			System.out.println(c.getName()+"    "+c.getAge()+"     "+c.getDes());
		}
		
		tr.commit();
		s.close();
	}
}


转载于:https://my.oschina.net/aypak/blog/70504

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值