首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate one -to -one 地图ping for Oracle auto-increment key

2013-04-07 
Hibernate one -to -one mapping for Oracle auto-increment keycreate table stock (stock_id number(10)

Hibernate one -to -one mapping for Oracle auto-increment key
create table stock ( stock_id number(10) not null, stock_code varchar2(10) not null, stock_name varchar2(10) not null, primary key (stock_id));

? the child table

?

?

create table stock_detail(    stock_id number(10) not null,    comp_name varchar2(100) not null,    comp_desc varchar2(100) not null,    remark_desc varchar2(100) not null,    listed_date date not null,    primary key (stock_id),    foreign key(stock_id) references stock(stock_id)    )

?below is create the sequence for the parent table for the primary key

?

?

create sequence stock_seq start with 1 increment by 1 nomaxvalue;

?below trigger auto-update the primary key for the parent table

?

?

create or replace trigger stock_triggerbefore insert on stockfor each row    begin        select stock_seq.nextval into:new.stock_id from dual;    end;/   

?below is test for above code, don't need in the demo, u can ignore

?

?

insert into stock(stock_code,stock_name) values('112','112_com')insert into stock_detail(stock_id,comp_name,comp_desc,remark_desc,listed_date) values(4,'111','111','111',to_date('2013-04-05','yyyy-mm-dd'))desc stock;desc stock_detail;select * from stock;    select * from stock_detail;  create or replace procedure proc_dropifexist(    p_table in varchar2 ) is   v_count number(10);   begin    select count(*)    into v_count    from user_tables    where table_name = upper(p_table);    if v_count > 0 then     execute immediate 'drop table ' || p_table ||' purge';    end if;  end proc_dropifexist;              exec proc_dropifexist('stock');

?

?

2. pojo & sessionFactory

?

1. Stock:

?

public class Stock implements java.io.Serializable {    private int stockId;    private String stockCode;    private String stockName;    private StockDetail stockDetail;      ... //ignore the constructor & getter/setter}

?2. StockDetail:

?

?

public class StockDetail implements java.io.Serializable {    private int stockId;    private Stock stock;    private String compName;    private String compDesc;    private String remarkDesc;    private Date listedDate;...//ingore the constructor & getter/setter}

?

3. SesstionFactory get via HibernateUtil

import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil {    private static final SessionFactory sessionFactory = buildSessionFactory();        private static SessionFactory buildSessionFactory() {        try {            //create SessionFactory from hibernate.cfg.xml            return new Configuration().configure().buildSessionFactory();        } catch(Throwable ex) {            System.err.println("Initial SessionFactory creation failed: " + ex);            throw new ExceptionInInitializerError(ex);        }    }    public static SessionFactory getSessionFactory() {        return sessionFactory;    }    public static void shutdown() {        getSessionFactory().close();    }}

?

4. xml config file:

?

?Stock.hbm.xml

<?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"><hibernate-mapping><class name="net.codercn.module.Stock" table="stock"><id name="stockId" type="int"><column name="stock_id"/><generator type="string"><column name="stock_code" length="10" not-null="true"/></property><property name="stockName" type="string"><column name="stock_name" length="10" not-null="true"/></property><one-to-one name="stockDetail" cascade="save-update"></one-to-one></class></hibernate-mapping>

?

StockDetail.hbm.xml

<?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"><hibernate-mapping><class name="net.codercn.module.StockDetail" table="stock_detail"><id name="stockId" type="int"><column name="stock_id"/><generator constrained="true"></one-to-one><property name="compName" type="string"><column name="comp_name" length="100" not-null="true"/></property><property name="compDesc" type="string"><column name="comp_desc" length="100" not-null="true"/></property><property name="remarkDesc" type="string"><column name="remark_desc" length="100" not-null="true"/></property><property name="listedDate" type="date"><column name="listed_date" length="10" not-null="true"/></property></class></hibernate-mapping>

?

Hibernate.cfg.xml:

<?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"><hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property><property name="hibernate.connection.url">jdbc:oracle:thin:@~~~</property><property name="hibernate.connection.username">~~~</property><property name="hibernate.connection.password">~~</property><property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property><property name="hibernate.default_schema">~~~</property><mapping resource="hibernate/Stock.hbm.xml" /><mapping resource="hibernate/StockDetail.hbm.xml" /></session-factory></hibernate-configuration>

?

?

5. test

package net.codercn;import java.util.Date;import net.codercn.module.Stock;import net.codercn.module.StockDetail;import net.codercn.util.HibernateUtil;import org.hibernate.Session;public class App {    public static void main(String[] args) {        System.out.println("Maven + Hibernate + Oracle");        Session session = HibernateUtil.getSessionFactory().openSession();                session.beginTransaction();                Stock stock = new Stock();        stock.setStockCode("111");        stock.setStockName("God");                StockDetail stockDetail = new StockDetail();        stockDetail.setCompName("God Internal");        stockDetail.setCompDesc("Greatest Company in heaven");        stockDetail.setRemarkDesc("Nothing Special");        stockDetail.setListedDate(new Date());                stock.setStockDetail(stockDetail);        stockDetail.setStock(stock);                session.save(stock);        session.getTransaction().commit();        System.out.println("insert a record into table");            }}

?

6. maven pom.xml

?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>net.codercn</groupId>  <artifactId>Hibernate</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>Hibernate</name>  <url>http://maven.apache.org</url>    <repositories>  <repository>  <id>JBoss repository</id>  <url>http://repository.jboss.org/nexus/content/groups/public/</url>  </repository>  </repositories>    <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>        <!--  Hibernate  -->    <dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-core</artifactId>    <version>3.6.3.Final</version>    </dependency>    <dependency>    <groupId>javassist</groupId>    <artifactId>javassist</artifactId>    <version>3.12.1.GA</version>    </dependency>    <!--  oracle jdbc driver -->    <dependency>    <groupId>com.oracle</groupId>    <artifactId>oraclejdbc</artifactId>    <version>10.2.0.3.0</version>    </dependency>  </dependencies></project>

?

?7. manually install ?JDBC driver to local repository:

    get jdbc driver and put it in an folder(if installed oracle, it always locate at : D:\oracle\product\10.1.0\db_1\jdbc\lib\ojdbc14.jar)go to above jdbc driver folder, run below maven command:
     mvn install:install-file -Dfile=ojdbc14.jar -DgroupId=com.oracle -DartifactId=oraclejdbc -Dversion=10.1.0.2.0 -Dpackaging=jar -DgeneratePom=true
    ?check your maven local repository (~maven\repository\com\oracle\oracle\10.1.0.2.0), it will install the jdbc driver

    ?

    ?

热点排行