Hibernate中的集合映射
2016-06-06 18:26
441 查看
1.定义实体
public class User { private int userId; private String userName; private Set<String> address; set... get... }
2.写映射文件
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.juaner.hibernate.address"> <class name="User" table="t_user"> <id name="userId" column="u_id"> <generator class="native"/> </id> <property name="userName" column="u_name"/> <set name="address" table="t_address"> <!--外键字段--> <key column="u_id"></key> <!--其他字段,没有bean与其对应,必须制定type--> <element column="address" type="string"></element> </set> <!--list有先后顺序,list-index制定排序列的名称--> <!--<list name="addressList" table="t_addresslist">--> <!--<key column="u_id"></key>--> <!--<list-index column="idx"></list-index>--> <!--<element column="address" type="string"></element>--> <!--</list>--> </class> </hibernate-mapping>
3.保存数据
@Test public void testSave()throws Exception{ Session session = sf.openSession(); session.beginTransaction(); Set<String> address = new HashSet<String>(); address.add("广州"); address.add("北京"); User user = new User(); user.setUserName("jack"); user.setAddress(address); session.save(user); session.getTransaction().commit(); session.close(); }
4.结果
t_user表:t_address表:
5.获取数据
@Test public void test3()throws Exception{ Session session = sf.openSession(); session.beginTransaction(); User user = (User) session.get(User.class, 1); System.out.println(user); //当查询用户,同时可以获取用户关联的list集合的数据 //当使用到集合数据时,才向数据库发送执行的sql语句(懒加载,可以提高执行效率) System.out.println(user.getAddressList()); session.getTransaction().commit(); session.close(); }
相关文章推荐
- Java中用内存映射处理大文件
- 微信支付时出现[交易已提交,请查询确认是否已扣款,避免重复操作]
- Android强制设置横屏或竖屏
- Fiddler模拟WEB请求-Composer
- 快速排序详解
- 母牛的故事
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- 设置透明NavigationBar
- MySql笔记【持续更新】
- wpa_supplicant与内核nl80211通信之Netlink
- CodeForces 300A Array
- JedisRedirectionException:Too many Cluster redirections
- ctags简易用法
- wifi协议-802
- RandomAccess接口
- 第二阶段冲刺第七天,6月6日。
- 第二阶段冲刺6(6月5号)
- 在PPT中插入网页技巧
- Android蓝牙与全站仪蓝牙仪器数据交互
- 安卓让自己的应用处在栈顶