zoukankan      html  css  js  c++  java
  • hibernate hibernate.cfg.xml component 组件

    1.为什么使用component组件?

    当一个表的列数目比较多时,可以根据属性分类,将一个java对象拆分为几个对象。

    数据库还是一张表,不过有多个对象与之对应。

    2.实例

    2.1 Java 对象:

     1 public class Person {
     2 
     3     private int id;
     4     private Name name;
     5     private Parents parents;
     6 
     7     public Parents getParents() {
     8         return parents;
     9     }
    10 
    11     public void setParents(Parents parents) {
    12         this.parents = parents;
    13     }
    14 
    15     public int getId() {
    16         return id;
    17     }
    18 
    19     public void setId(int id) {
    20         this.id = id;
    21     }
    22 
    23     public Name getName() {
    24         return name;
    25     }
    26 
    27     public void setName(Name name) {
    28         this.name = name;
    29     }
    30 }
     1 public class Parents {
     2     private Name father;
     3     private Name mother;
     4 
     5     public Name getFather() {
     6         return father;
     7     }
     8 
     9     public void setFather(Name father) {
    10         this.father = father;
    11     }
    12 
    13     public Name getMother() {
    14         return mother;
    15     }
    16 
    17     public void setMother(Name mother) {
    18         this.mother = mother;
    19     }
    20 }
     1 public class Name {
     2     private String bigName;
     3     private String nickName;
     4     private int nameVersion;
     5 
     6     public String getBigName() {
     7         return bigName;
     8     }
     9 
    10     public void setBigName(String bigName) {
    11         this.bigName = bigName;
    12     }
    13 
    14     public int getNameVersion() {
    15         return nameVersion;
    16     }
    17 
    18     public void setNameVersion(int nameVersion) {
    19         this.nameVersion = nameVersion;
    20     }
    21 
    22     public String getNickName() {
    23         return nickName;
    24     }
    25 
    26     public void setNickName(String nickName) {
    27         this.nickName = nickName;
    28     }
    29 }

    2.2 Hibernate 配置文件 hibernate.cfg.xml

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
     5         >
     6 <hibernate-configuration>
     7     <session-factory>
     8         <!-- Platform settings -->
     9         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    10         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
    11         <property name="connection.username">root</property>
    12         <property name="connection.password">123456</property>
    13         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    14         <!-- Miscellaneous Settings -->
    15         <property name="show_sql">true</property>
    16         <!--mapping files-->
    17         <mapping resource="test/com/hibernate/config/hbm/person.hbm.xml"/>
    18     </session-factory>
    19 
    20 </hibernate-configuration>

    映射文件person.hbm.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC
     3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping>
     6     <class name="test.com.hibernate.component.Person" table="person" lazy="false">
     7         <id name="id" column="id" type="java.lang.Integer">
     8             <generator class="native"/>
     9         </id>
    10         <component name="name" class="test.com.hibernate.component.Name" >
    11             <property name="bigName" column="bigName" type="string"/>
    12             <property name="nickName" column="nickName" type="string"/>
    13             <property name="nameVersion" column="nameVersion" type="integer"/>
    14         </component>
    15         <component name="parents" class="test.com.hibernate.component.Parents">
    16             <component name="father" class="test.com.hibernate.component.Name">
    17                 <property name="bigName" column="f_bigName" type="string"/>
    18                 <property name="nickName" column="f_nickName" type="string"/>
    19                 <property name="nameVersion" column="f_nameVersion" type="integer"/>
    20             </component>
    21             <component name="mother" class="test.com.hibernate.component.Name">
    22                 <property name="bigName" column="m_bigName" type="string"/>
    23                 <property name="nickName" column="m_nickName" type="string"/>
    24                 <property name="nameVersion" column="m_nameVersion" type="integer"/>
    25             </component>
    26         </component>
    27     </class>
    28 </hibernate-mapping>

    2.3 Hibernate 操作代码:

    HibernateUtil.java

     1 public class HibernateUtil {
     2     static SessionFactory sessionFactory = null;
     3     static{
     4         StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
     5                 .configure("test/com/hibernate/config/hibernate.cfg.xml").build();
     6         MetadataSources sources = new MetadataSources();
     7         Metadata metadata = sources.buildMetadata(registry);
     8         sessionFactory = metadata.buildSessionFactory();
     9     }
    10     public static Session openSession(){
    11         if(sessionFactory==null){
    12             throw new HibernateException("session factory is null!");
    13         }
    14         return sessionFactory.openSession();
    15     }
    16     public static void destroy() {
    17         if(sessionFactory!=null){
    18             sessionFactory.close();
    19         }
    20     }
    21 }

    Test.java

     1 public class Test {
     2 
     3     public static void main(String[] args) {
     4 
     5         Name name = new Name();
     6         name.setBigName("Daughter");
     7         name.setNickName("girl");
     8         name.setNameVersion(1);
     9         Person person = new Person();
    10         person.setName(name);
    11 
    12         Name father = new Name();
    13         father.setBigName("Father");
    14         father.setNickName("man");
    15         father.setNameVersion(1);
    16         Name mother = new Name();
    17         mother.setBigName("Mother");
    18         mother.setNickName("woman");
    19         mother.setNameVersion(1);
    20 
    21         Parents parents = new Parents();
    22         parents.setFather(father);
    23         parents.setMother(mother);
    24 
    25         person.setParents(parents);
    26 
    27         PersonDao.save(person);
    28     }
    29 }

    上述例子使用Hibernate版本为5.2Final,配置文件也可以用以前的Configuration配置。

    2.4 运行结果

    自动创建一个person表,并插入一条数据

  • 相关阅读:
    JavaScript设计模式与开发实践 适配器模式
    JavaScript设计模式与开发实践 状态模式
    JavaScript设计模式与开发实践 装饰者模式
    JavaScript设计模式与开发实践 中介者模式
    JavaScript设计模式与开发实践 职责链模式
    meta标签属性
    在制作网站之前,前端程序员应该考虑哪些技术细节?
    JavaScript设计模式与开发实践 享元模式
    JavaScript设计模式与开发实践 模板方法模式
    梯度下降法
  • 原文地址:https://www.cnblogs.com/selfchange/p/5631158.html
Copyright © 2011-2022 走看看