javaee之hibernate的加强巩固练习

hibernate的核心API:
在hibernate的框架中,比较核心的是对数据库的增删改查的四个方法:
Session()、delete()、update()
对于查询的方法来说,分为:单个对象的获取,多个表对象的查询获取
单个对象:get()、load(),而对于多个表查询的方法:createQuery(hql语句)还能设置一个参数

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




public class text {


	//添加
	@Test
	public void text01(){
		Configuration config = new Configuration().configure();
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
		SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
		Session session = sessionFactory.openSession();
		
		Transaction tx = session.beginTransaction();
		
		User u = new User();
		u.setName("张三");
		
		Address address1 = new Address();
		address1.setName("xx");
		address1.setPhone("123456");
		address1.setCode("51235");
		address1.setAddre("sadasda");
		address1.setUser(u);
		
		Address address2 = new Address();
		address2.setName("xx2");
		address2.setPhone("1234562");
		address2.setCode("512352");
		address2.setAddre("sadasda2");
		address2.setUser(u);
		
		u.getAddress().add(address1);
		u.getAddress().add(address2);
		
		session.save(u);
		
		tx.commit();
		session.close();
	}
	
	//查询
	@Test
	public void test02(){
		Configuration config = new Configuration().configure();
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
		SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		
		User user = (User)session.get(User.class, 1);
		System.out.println(user.getName() + ".." + user.getAddress());
		
		tx.commit();
		session.close();
	}
	
	//删除
	@Test
	public void test03(){
		Configuration config = new Configuration().configure();
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
		SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		
		User user = (User)session.get(User.class, 1);
		session.delete(user);
		
		tx.commit();
		session.close();
	}
	
	//修改
	@Test
	public void test04(){
		Configuration config = new Configuration().configure();
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
		SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		
		User user = (User)session.get(User.class, 1);
		user.setName("李四");
		session.update(user);
		
		tx.commit();
		session.close();
	}
}



hibernate中映射文件:
1、映射文件 的id主键生成策略:

<id name="id">
			<!--
			    class里面可以填写的值:
				identity:实现主键id的自增长,适合mysql
				native: 在identity、sequence、hilo中选择一个适合数据库的,
					 mysql的会去选择identity,oracle会去选择sequence,都不是的话就会选择hilo(高低位算法)
				sequence:实现主键id的序列增长,适合Oracle
				assigned:让开发者自己手动设置主键id的值
				increment:通过hibernate自己来对id实现的自增长
				uuid: 通过hibernate自己来生成一个String的32位字符串
			-->
			<generator class="native" />
		</id>



2、普通数据类型的映射

<property name="name" column="pname" type="xxx" length="xxx" />
		type的数据类型:
		1)、可以写java写法,默认为在实体类中的类型
			整数:java.lang.Integer
			字符串:java.lang.String ...
		2)在hibernate中的写法(为java写法的类型小写类型):
			整数:integer
			字符串:string  ...
		<property name="name" column="pname" type="datetime" />
		<property name="name" column="pname" type="string" length="1024000" />


hibernate的映射文件的集合映射
1、映射Set集合
<!-- Set集合的映射,Set特点是无序,不重复 
			key:外键
		 -->
		<set name="addressSet" table="t_addressSet">
			<key column="uid"></key>
			<element type="string" column="address"></element>
		</set>
		
		
//采用Set的集合方法的映射
		private Set<String> addressSet = new HashSet<String>();






2、映射List集合
//采用List的集合方法的映射
		private List<String> addressList = new ArrayList<String>();

	
		<!-- List的映射,List的特点为:有序,可重复 
			所以需要一个额外的列来设置序号
		 -->
		<list name="addressList" table="t_addressList">
			<key column="uid"></key>
			 <index column="idx"></index>
			 <element type="string" column="address"></element>
		 </list>


 
 


3、映射Map集合
	//采用Map的集合方法的映射,键值对
		private Map<String,String> addressMap = new HashMap<String,String>();
		
		<!-- Map的集合,Map特点:无序可重复
			所以需要提供一个额外的Map-key,来提供键值对
		 -->
		 <map name="addressMap" table="t_addressMap">
			 <key column="uid"></key>
			 <map-key type="string" column="addressno"></map-key>
			 <element type="string" column="address"></element>
		 </map>



通过今天的加强对hibernate的练习,能够更加清晰去了解session的各种核心方法和配置文件,映射文件的更多的配置

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值