1.hibernate.cfg.xml配置
- <!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:///hib-demo</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123456</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>
2.User对象
- package cn.itcast.a_collection;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- 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 Map<String, String> getAddressMap() {
- return addressMap;
- }
- public void setAddressMap(Map<String, String> addressMap) {
- this.addressMap = addressMap;
- }
- public List<String> getAddressList() {
- return addressList;
- }
- public void setAddressList(List<String> addressList) {
- this.addressList = addressList;
- }
- 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;
- }
- }
3.User.hbm.xml
- <?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">
- <!--
- This mapping demonstrates content-based discrimination for the
- table-per-hierarchy mapping strategy, using a formula
- discriminator.
- -->
- <!--映射文件:映射一个实体类对象,描述一个对象最终可以直接保存对象数据到数据库中 -->
- <!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径)
- auto-import 默认为true,在写HQL的时候自动导入包名
- 如果指定为false,在写HQL的时候必须要写上类的全名-->
- <hibernate-mapping package="cn.itcast.a_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 指定集合表t_address的外键字段
- element指定集合表的其他字段
- type元素类型一定要指定-->
- <set name="address" table="t_address">
- <key column="uid"></key>
- <element column="address" type="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="string"></element>
- </list>
- <!-- Map集合属性的映射
- key指定外键字段
- map-key 指定 map的key
- element 指定map的value-->
- <map name="addressMap" table="t_addressMap">
- <key column="uid"></key>
- <map-key column="shortName" type="string"></map-key>
- <element column="address" type="string"></element>
- </map>
- </class>
- </hibernate-mapping>
4.Junit测试
- package cn.itcast.a_collection;
- import java.util.HashSet;
- import java.util.Set;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.classic.Session;
- import org.junit.Test;
- public class App {
- private static SessionFactory sf;
- static{
- sf=new Configuration()
- .configure()
- .addClass(User.class)
- .buildSessionFactory();
- }
- //保存set
- @Test
- public void testSaveSet() throws Exception{
- Session session=sf.openSession();
- Transaction tx=session.beginTransaction();
- Set<String> addressSet=new HashSet<String>();
- addressSet.add("广州");
- addressSet.add("深圳");
- User user=new User();
- user.setUserName("Jack");
- user.setAddress(addressSet);
- session.save(user);
- tx.commit();
- session.close();
- }
- //保存list
- @Test
- public void testSaveList() throws Exception{
- Session session=sf.openSession();
- Transaction tx=session.beginTransaction();
- User user=new User();
- user.setUserName("Tom");
- /*user.getAddressList().add("广州");
- user.getAddressList().add("深圳");
- session.save(user);*/
- user.getAddressMap().put("A0001", "广州");
- user.getAddressMap().put("A0002", "深圳");
- session.save(user);
- tx.commit();
- session.close();
- }
- }
-------------------------------------转自http://blog.csdn.net/miachen520/article/details/52165968------------------------