`

hibernate的级联操作

阅读更多
转载:http://yugouai.iteye.com/blog/974170

关键字: hibernate级联配置
1.级联是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作;
2.级联配置通过many-to-one的cascade属性实现;
3.cascade属性有四种取值:
  all:所有操作都执行级联操作;
  none:所有操作都不执行级联操作;
  save-update:保存和更新时执行级联操作;
  delete:删除时执行级联操作;
4.通过级联操作可以解决持久化对象不能直接引用瞬时对象的问题。

hibernate.cfg.xml:

Java代码 
<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
 
<!-- Generated by MyEclipse Hibernate Tools.                   --> 
<hibernate-configuration> 
 
    <session-factory> 
        <property name="connection.username">useName</property> 
        <property name="connection.url">url</property> 
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> 
        <property name="myeclipse.connection.profile">...</property> 
        <property name="connection.password">pass</property> 
        <property name="connection.driver_class">driveclass</property> 
        <property name="show_sql">true</property> 
         
        <mapping resource="pojo/Group.hbm.xml" /> 
        <mapping resource="pojo/User.hbm.xml" />        
    </session-factory> 
</hibernate-configuration> 



Group.java:

Java代码 
package pojo; 
 
public class Group { 
 
    private long id; 
    private String name; 
 
    public long getId() { 
        return id; 
    } 
 
    public void setId(long id) { 
        this.id = id; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 




User.java:

Java代码 
package pojo; 
 
public class User { 
 
    private long id; 
    private String username; 
    private String password; 
    private Group group; 
 
    public Group getGroup() { 
        return group; 
    } 
 
    public void setGroup(Group group) { 
        this.group = group; 
    } 
 
    public long getId() { 
        return id; 
    } 
 
    public void setId(long id) { 
        this.id = id; 
    } 
 
    public String getUsername() { 
        return username; 
    } 
 
    public void setUsername(String username) { 
        this.username = username; 
    } 
 
    public String getPassword() { 
        return password; 
    } 
 
    public void setPassword(String password) { 
        this.password = password; 
    } 
 




Group.hbm.xml:

Java代码 
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!--  
    Mapping file autogenerated by MyEclipse Persistence Tools 
--> 
<hibernate-mapping> 
    <class name="pojo.Group" table="GROUP" schema="SCOTT"> 
        <id name="id" type="java.lang.Long"> 
            <column name="ID" precision="22" scale="0" /> 
            <generator class="native" /> 
        </id> 
        <property name="name" type="java.lang.String"> 
            <column name="NAME" length="20" not-null="true" /> 
        </property> 
    </class> 
</hibernate-mapping> 




User.hbm.xml:

Java代码 
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!--  
    Mapping file autogenerated by MyEclipse Persistence Tools 
--> 
<hibernate-mapping> 
    <class name="pojo.User" table="USER" schema="SCOTT"> 
        <id name="id" type="java.lang.Long"> 
            <column name="ID" precision="22" scale="0" /> 
            <generator class="native" /> 
        </id> 
        <property name="username" type="java.lang.String"> 
            <column name="USERNAME" length="10" not-null="true" /> 
        </property> 
        <property name="password" type="java.lang.String"> 
            <column name="PASSWORD" length="10" not-null="true" /> 
        </property> 
        <many-to-one name="group" column="RELATEDGROUP" cascade="all" /> 
    </class> 
</hibernate-mapping> 


HibernateSessionFactory.java:
Java代码 
package factory; 
 
import org.hibernate.HibernateException; 
import org.hibernate.Session; 
import org.hibernate.cfg.Configuration; 
 
public class HibernateSessionFactory { 
    
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; 
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); 
    private  static Configuration configuration = new Configuration(); 
    private static org.hibernate.SessionFactory sessionFactory; 
    private static String configFile = CONFIG_FILE_LOCATION; 
 
    static { 
        try { 
            configuration.configure(configFile); 
            sessionFactory = configuration.buildSessionFactory(); 
        } catch (Exception e) { 
            System.err 
                    .println("Error Creating SessionFactory"); 
            e.printStackTrace(); 
        } 
    } 
    private HibernateSessionFactory() { 
    } 
     
    public static Session getSession() throws HibernateException { 
        Session session = (Session) threadLocal.get(); 
 
        if (session == null || !session.isOpen()) { 
            if (sessionFactory == null) { 
                rebuildSessionFactory(); 
            } 
         session = (sessionFactory != null) ? sessionFactory.openSession() 
                    : null; 
            threadLocal.set(session); 
        } 
 
        return session; 
    } 
 
        public static void rebuildSessionFactory() { 
        try { 
            configuration.configure(configFile); 
            sessionFactory = configuration.buildSessionFactory(); 
        } catch (Exception e) { 
            System.out 
                    .println("Error Creating SessionFactory"); 
            e.printStackTrace(); 
        } 
    } 
 
        public static void closeSession() throws HibernateException { 
        Session session = (Session) threadLocal.get(); 
        threadLocal.set(null); 
 
        if (session != null) { 
            session.close(); 
        } 
    } 
    
    public static org.hibernate.SessionFactory getSessionFactory() { 
        return sessionFactory; 
    } 
 
    public static void setConfigFile(String configFile) { 
        HibernateSessionFactory.configFile = configFile; 
        sessionFactory = null; 
    } 
 
    public static Configuration getConfiguration() { 
        return configuration; 
    } 
 



ExportToDB.java:
Java代码 
package export; 
 
import org.hibernate.cfg.Configuration; 
import org.hibernate.tool.hbm2ddl.SchemaExport; 
 
public class ExportToDB { 
    public static void main(String[] args) { 
        Configuration cfg = new Configuration().configure(); 
        SchemaExport export = new SchemaExport(cfg); 
        export.create(true, true); 
    } 





ExportDBAddCascade.java:

Java代码 
package export; 
 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
 
import factory.HibernateSessionFactory; 
import pojo.Group; 
import pojo.User; 
 
public class ExportDBAddCascade { 
 
    public static void main(String[] args) { 
        Session session = HibernateSessionFactory.getSession(); 
        session.beginTransaction(); 
         
        Group group = new Group(); 
        group.setName("J2EE Developer"); 
         
        for (int i = 0; i < 10; i++) { 
            User user = new User(); 
            user.setUsername("name" + i); 
            user.setPassword("111"); 
            user.setGroup(group); 
            session.save(user); 
        } 
         
        session.getTransaction().commit(); 
         
        HibernateSessionFactory.closeSession(); 
    } 
 
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics