• Hibernate逍遥游记-第5章映射一对多-01单向<many-to-one>、cascade="save-update"、lazy、TransientObjectException


    1.

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping
     3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping >
     6 
     7    <class name="mypack.Monkey" table="MONKEYS">
     8      
     9       <id name="id" type="long" column="ID">
    10         <generator class="increment"/>
    11       </id>
    12    
    13       <property name="name" type="string" column="NAME" />
    14       
    15     <!--
    16      <many-to-one
    17         name="team"
    18         column="TEAM_ID"
    19         class="mypack.Team"
    20         lazy="false"
    21      />
    22      -->
    23 
    24 <!-- mapping with cascade -->
    25 <!---->
    26       <many-to-one
    27         name="team"
    28         column="TEAM_ID"
    29         class="mypack.Team"
    30         cascade="save-update"  
    31         lazy="false" 
    32       />
    33 
    34 
    35     </class>
    36  
    37 </hibernate-mapping>

     

    2.

     1 package mypack;
     2 public class Monkey{
     3      private long id;
     4      private String name;
     5      private Team team;
     6 
     7     public Monkey() {}
     8     public Monkey(String name, Team team) {
     9        this.name = name;
    10        this.team = team;
    11     }
    12    
    13     public long getId() {
    14         return this.id;
    15     }
    16     
    17     public void setId(long id) {
    18         this.id = id;
    19     }
    20     public String getName() {
    21         return this.name;
    22     }
    23     
    24     public void setName(String name) {
    25         this.name = name;
    26     }
    27     public Team getTeam() {
    28         return this.team;
    29     }
    30     
    31     public void setTeam(Team team) {
    32         this.team = team;
    33     }
    34 
    35 
    36 
    37 
    38 }

    3.

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping
     3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping >
     6 
     7   <class name="mypack.Team" table="TEAMS" >
     8     <id name="id" type="long" column="ID">
     9       <generator class="increment"/>
    10     </id>
    11 
    12     <property name="name" type="string" column="NAME" />
    13         
    14   </class>
    15 
    16 </hibernate-mapping>

    4.

     1 package mypack;
     2 public class Team {
     3      private long id;
     4      private String name;
     5 
     6     public Team() {
     7     }
     8 
     9     public Team(String name) {
    10        this.name = name;
    11     }
    12    
    13     public long getId() {
    14         return this.id;
    15     }
    16     
    17     public void setId(long id) {
    18         this.id = id;
    19     }
    20     public String getName() {
    21         return this.name;
    22     }
    23     
    24     public void setName(String name) {
    25         this.name = name;
    26     }
    27 
    28 
    29 
    30 
    31 }

    5.

      1 package mypack;
      2 
      3 import org.hibernate.*;
      4 import org.hibernate.cfg.Configuration;
      5 import java.util.*;
      6 
      7 public class BusinessService{
      8   public static SessionFactory sessionFactory;
      9   static{
     10      try{
     11       // Create a configuration based on the properties file we've put
     12        Configuration config = new Configuration();
     13        config.configure();
     14        sessionFactory = config.buildSessionFactory();
     15     }catch(RuntimeException e){e.printStackTrace();throw e;}
     16   }
     17 
     18   public List findMonkeysByTeam(Team team){
     19     Session session = sessionFactory.openSession();
     20     Transaction tx = null;
     21     try {
     22       tx = session.beginTransaction();
     23 
     24       List monkeys=session.createQuery("from Monkey as m where m.team.id="+team.getId())
     25                          .list();
     26       tx.commit();
     27       return monkeys;
     28     }catch (RuntimeException e) {
     29       if (tx != null) {
     30         tx.rollback();
     31       }
     32       throw e;
     33     } finally {
     34       session.close();
     35     }
     36   }
     37 
     38   public Team findTeam(long team_id){
     39     Session session = sessionFactory.openSession();
     40     Transaction tx = null;
     41     try {
     42       tx = session.beginTransaction();
     43       Team team=(Team)session.get(Team.class,new Long(team_id));
     44       tx.commit();
     45       return team;
     46     }catch (RuntimeException e) {
     47       if (tx != null) {
     48         tx.rollback();
     49       }
     50       throw e;
     51     } finally {
     52       session.close();
     53     }
     54   }
     55 
     56   public void saveTeamAndMonkeyWithCascade(){
     57     Session session = sessionFactory.openSession();
     58     Transaction tx = null;
     59     try {
     60       tx = session.beginTransaction();
     61 
     62       Team team=new Team("BULL");
     63       Monkey monkey1=new Monkey("Tom",team);
     64       Monkey monkey2=new Monkey("Mike",team);
     65 
     66       session.save(monkey1);
     67       session.save(monkey2);
     68 
     69       tx.commit();
     70 
     71     }catch (RuntimeException e) {
     72       if (tx != null) {
     73         tx.rollback();
     74       }
     75       e.printStackTrace();
     76     } finally {
     77       session.close();
     78     }
     79   }
     80 
     81   public void saveTeamAndMonkey(){
     82     Session session = sessionFactory.openSession();
     83     Transaction tx = null;
     84     try {
     85       tx = session.beginTransaction();
     86 
     87       Team team=new Team("DREAM");
     88       session.save(team);
     89 
     90       Monkey monkey1=new Monkey("Jack",team);
     91       Monkey monkey2=new Monkey("Bill",team);
     92       session.save(monkey1);
     93       session.save(monkey2);
     94       tx.commit();
     95 
     96     }catch (RuntimeException e) {
     97       if (tx != null) {
     98         tx.rollback();
     99       }
    100       throw e;
    101     } finally {
    102       session.close();
    103     }
    104   }
    105 
    106   public void printMonkeys(List monkeys){
    107       for (Iterator it = monkeys.iterator(); it.hasNext();) {
    108          Monkey monkey=(Monkey)it.next();
    109          System.out.println("Monkeys in "+monkey.getTeam().getName()+ " :"+monkey.getName());
    110       }
    111   }
    112 
    113    public void test(){
    114       saveTeamAndMonkey();
    115       saveTeamAndMonkeyWithCascade();
    116       Team team=findTeam(1);
    117       List monkeys=findMonkeysByTeam(team);
    118       printMonkeys(monkeys);
    119   }
    120 
    121   public static void main(String args[]){
    122     new BusinessService().test();
    123     sessionFactory.close();
    124   }
    125 }

    6.

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <!DOCTYPE hibernate-configuration
     3  PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
     4  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     5 <hibernate-configuration>
     6     <session-factory>
     7         <property name="dialect">
     8             org.hibernate.dialect.MySQLDialect
     9         </property>
    10         <property name="connection.driver_class">
    11             com.mysql.jdbc.Driver
    12         </property>
    13         <property name="connection.url">
    14             jdbc:mysql://localhost:3306/sampledb
    15         </property>
    16         <property name="connection.username">
    17             root
    18         </property>
    19         <property name="connection.password">
    20             1234
    21         </property>
    22         <property name="show_sql">true</property>
    23         <mapping resource="mypack/Team.hbm.xml" />
    24         <mapping resource="mypack/Monkey.hbm.xml" />
    25     </session-factory>
    26 </hibernate-configuration>

    7.

     1 drop database if exists SAMPLEDB;
     2 create database SAMPLEDB;
     3 use SAMPLEDB;
     4 
     5 create table TEAMS (
     6 ID bigint not null,
     7 NAME varchar(15), 
     8 primary key (ID));
     9 
    10 create table MONKEYS (
    11 ID bigint not null, 
    12 NAME varchar(15),
    13 TEAM_ID bigint, 
    14 primary key (ID));
    15 
    16 alter table MONKEYS add index IDX_TEAM(TEAM_ID), 
    17 add constraint FK_TEAM foreign key (TEAM_ID) references TEAMS (ID);

    8.

     1 <?xml version="1.0"?>
     2 <project name="Learning Hibernate" default="prepare" basedir=".">
     3 
     4   <!-- Set up properties containing important project directories -->
     5   <property name="source.root" value="5.1/src"/>
     6   <property name="class.root" value="5.1/classes"/>
     7   <property name="lib.dir" value="lib"/>
     8   <property name="schema.dir" value="5.1/schema"/>
     9 
    10   <!-- Set up the class path for compilation and execution -->
    11   <path id="project.class.path">
    12       <!-- Include our own classes, of course -->
    13       <pathelement location="${class.root}" />
    14       <!-- Include jars in the project library directory -->
    15       <fileset dir="${lib.dir}">
    16         <include name="*.jar"/>
    17       </fileset>
    18   </path>
    19 
    20   <!-- Create our runtime subdirectories and copy resources into them -->
    21   <target name="prepare" description="Sets up build structures">
    22     <delete dir="${class.root}"/>
    23     <mkdir dir="${class.root}"/>
    24 
    25     <!-- Copy our property files and O/R mappings for use at runtime -->
    26     <copy todir="${class.root}" >
    27       <fileset dir="${source.root}" >
    28         <include name="**/*.properties"/>
    29         <include name="**/*.hbm.xml"/>
    30         <include name="**/*.cfg.xml"/>
    31       </fileset>
    32     </copy>
    33   </target>
    34 
    35 
    36 
    37  <!-- Compile the java source of the project -->
    38   <target name="compile" depends="prepare"
    39           description="Compiles all Java classes">
    40     <javac srcdir="${source.root}"
    41            destdir="${class.root}"
    42            debug="on"
    43            optimize="off"
    44            deprecation="on">
    45       <classpath refid="project.class.path"/>
    46     </javac>
    47   </target> 
    48 
    49 
    50  <target name="run" description="Run a Hibernate sample"
    51           depends="compile">
    52     <java classname="mypack.BusinessService" fork="true">
    53       <classpath refid="project.class.path"/>
    54     </java>
    55   </target>
    56 
    57 </project>

     9.TransientObjectException

  • 相关阅读:
    Android中echarts使用
    小程序搜索定位导航
    去除数组对象中的某属性相同时删除整个对象
    小程序rtmp监控视频播放
    小程序定义优惠券样式
    小程序购物车实现
    JavaScript Cookie
    JqueryValidate使用
    oracel 创建表空间、用户、导入数据库
    跨域访问Jquery实现[转]
  • 原文地址:https://www.cnblogs.com/shamgod/p/5296729.html
Copyright © 2020-2023  润新知