Hibernate学习-6-集合映射保存和集合数据获取案例
2016-12-08 18:03
489 查看
创建User类
编写总配置
编写user映射配置
测试类
集合数据的获取
package com.cxspace.collection; import java.util.*; /** * Created by cxspace on 16-7-24. */ public class User { private int userId; private String userName; //存储的对象无序 private Set<String> address; private List<String> addressList = new ArrayList<String>(); private Map<String , String> addressMap = new HashMap<String, String>(); public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Set<String> getAddress() { return address; } public void setAddress(Set<String> address) { this.address = address; } public List<String> getAddressList() { return addressList; } public void setAddressList(List<String> addressList) { this.addressList = addressList; } public Map<String, String> getAddressMap() { return addressMap; } public void setAddressMap(Map<String, String> addressMap) { this.addressMap = addressMap; } }
编写总配置
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- 通常,一个session-factory节点代表一个数据库 --> <session-factory> <!-- 1. 数据库连接配置 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///learnstruts</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">33269456.cx</property> <!-- 数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 2. 其他相关配置 --> <!-- 2.1 显示hibernate在运行时候执行的sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 2.2 格式化sql <property name="hibernate.format_sql">true</property> --> <!-- 2.3 自动建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 3. 加载所有映射 <mapping resource="cn/itcast/a_hello/Employee.hbm.xml"/> --> </session-factory> </hibernate-configuration>
编写user映射配置
<?xml version="1.0"?> <!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.cxspace.collection"> <class name="User" table="t_user"> <id name="userId" column="id"> <generator class="native"></generator> </id> <property name="userName"></property> <!-- set集合属性映射 name 指定要映射的set集合的属性 table 集合属性要映射到的表 key 指定集合表的外键字段 element 指定集合表的其他字段 type 元素类型,一定要指定 --> <set name="address" table="t_address"> <key column="uid"></key> <element column="address" type="java.lang.String"></element> </set> <!-- list集合映射 list-index 指定的时排序列的名称(要保证list集合有序) --> <list name="addressList" table="t_addressList"> <key column="uid"></key> <list-index column="idx"></list-index> <element column="address" type="java.lang.String"></element> </list> <!-- map集合映射 key 指定的外键字段uid map-key 指定map的key element 指定map的value --> <map name="addressMap" table="t_addressMap"> <key column="uid"></key> <map-key column="shortName" type="java.lang.String"></map-key> <element column="address" type="java.lang.String"></element> </map> </class> </hibernate-mapping>
测试类
package com.cxspace.collection; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import java.util.HashSet; import java.util.Set; /** * Created by cxspace on 16-7-24. */ public class Test { private static SessionFactory sf; static { sf = new Configuration() .configure() .addClass(User.class) .buildSessionFactory(); } public void testSaveSet() throws Exception{ Session session = sf.openSession(); session.beginTransaction(); Set<String> addressSet = new HashSet<String>(); addressSet.add("北京"); addressSet.add("深圳"); User user = new User(); user.setUserName("cx"); user.setAddress(addressSet); session.save(user); session.getTransaction().commit(); session.close(); } public void testSaveList() throws Exception{ Session session = sf.openSession(); session.beginTransaction(); User user = new User(); user.setUserName("sike"); user.getAddressList().add("上海"); user.getAddressList().add("杭州"); session.save(user); session.getTransaction().commit(); session.close(); } @org.junit.Test public void testSaveMap() throws Exception{ Session session = sf.openSession(); session.beginTransaction(); User user = new User(); user.setUserName("kill"); user.getAddressMap().put("a0001","广州"); user.getAddressMap().put("a0002","南昌"); session.save(user); session.save(user); session.getTransaction().commit(); session.close(); } }
集合数据的获取
public void testGet() throws Exception{ Session session = sf.openSession(); session.beginTransaction(); User user = (User) session.get(User.class , 3); //及时加载 System.out.println(user.getUserId()); System.out.println(user.getUserName()); /* 当查询用户,同时可以获取用户关联的list集合的数据(因为有正确的映射) 当使用到集合数据的使用,才向数据库发送执行的sql语句(懒加载) */ System.out.println(user.getAddressList()); session.getTransaction().commit(); session.close(); }
相关文章推荐
- SSH框架之Hibernate的Map集合映射、Map集合数据的保存、集合数据的获取
- SSH框架之Hibernate的List集合映射、数组映射、List集合的数据保存
- SSH框架之Hibernate的程序执行流程、Set集合映射、Set集合的数据保存
- Hibernate学习之 -- 使用Middlegen-Hibernate-r5创建oracle10g的table的hibernate映射文件,Hibernate学习笔记三 ---持久化类和关系数据
- Hibernate 学习笔记07 --集合映射_&_继承映射
- Hibernate4学习总结(4)--注解形式的集合映射,关联关系映射
- 官方C++示例 InfraredBasics-D2D的学习及Kinect深度数据的获取、保存
- Hibernate学习文档_集合映射
- Hibernate继承映射--每个类一个数据表的实现案例
- hibernate3.3.2学习笔记---三种对象状态&删除数据&获取数据库对象&更新数据库对象
- Hibernate笔记③--集合映射、组合映射、联合主键、查询案例
- Hibernate集合映射学习
- Hibernate学习_015_集合映射
- hibernate中一对多映射(set集合中存放的原生数据类型,而不是实体)
- Hibernate学习(三)一对多数据的保存
- Hibernate学习笔记:集合映射之映射Map
- 根据对象批量获取页面数据迭代保存到集合中
- Hibernate学习笔记:集合映射之映射Map
- 【Hibernate学习笔记】映射值类型集合
- 【HIbernate框架学习】:Hibernate集合映射