在 eclipse(软件,IBM) 开发平台上写。
1. 先new一个带src目录的Java Project,因为src代表class_path! hibernatev.cfg.xml 、vlog4j.properties(配置文件)就放在其下,这两个文件必须放在class_path下。
2. add一个User Library,名字自己取,添加所需要的12个.jar包(最好所有jar包全部导入,保证不会错)。
3. 在src下new自己所需要的package,在package下写***.java 、***.hbm.xml 、***.sql 代码
4 写程序代码的顺序:写 JavaBean----sql文件(数据库建相关表)----***.hbm.xml映射文件------hibernate.cfg.xml(或者修改mapping标签的映射资源)------写相关测试Java程序(调用hibernate API,进行数据操作)。注意各代码文件放的位置。
5 配置文件hibernate.cfg.xml只需要写一次,以后用到的时候,基本是修改mapping标签;映射文件***.hbm.xml需要天天写,用一次写一次。
下面是 : ***.sql 、***.hbm.xml 、hibernatev.cfg.xml 、vlog4j.properties、测试Java程序
1. 先new一个带src目录的Java Project,因为src代表class_path! hibernatev.cfg.xml 、vlog4j.properties(配置文件)就放在其下,这两个文件必须放在class_path下。
2. add一个User Library,名字自己取,添加所需要的12个.jar包(最好所有jar包全部导入,保证不会错)。
3. 在src下new自己所需要的package,在package下写***.java 、***.hbm.xml 、***.sql 代码
4 写程序代码的顺序:写 JavaBean----sql文件(数据库建相关表)----***.hbm.xml映射文件------hibernate.cfg.xml(或者修改mapping标签的映射资源)------写相关测试Java程序(调用hibernate API,进行数据操作)。注意各代码文件放的位置。
5 配置文件hibernate.cfg.xml只需要写一次,以后用到的时候,基本是修改mapping标签;映射文件***.hbm.xml需要天天写,用一次写一次。
下面是 : ***.sql 、***.hbm.xml 、hibernatev.cfg.xml 、vlog4j.properties、测试Java程序
--------***.sql----------
- create sequence jdbc_car_seq;
- create sequence jdbc_license_seq;
- create table jdbc_car_pk
- ( cid number(7) primary key,
- manufactory varchar2(15) not null,
- producttype varchar2(15) not null
- );
- create table jdbc_license_pk
- ( lid number(7) primary key references jdbc_car_pk(cid),
- serialnum varchar2(15) not null,
- licensetype varchar2(15) not null
- );
---------User.hbm.xml----------
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.kettas.hibernate.day1">
- <class name="Users" table="jdbc_users" dynamic-update="true">
- <id name="id" column="id" unsaved-value="null">
- <generator class="sequence">
- <param name="sequence">jdbc_users_seq</param>
- </generator>
- </id>
- <property name="name" column="name"></property>
- <property name="passwd"></property>
- <property name="phone" column="phone"/>
- <property name="email"/>
- </class>
- </hibernate-mapping>
-----------hibernatev.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>
- <!-- 显示SQL -->
- <property name="show_sql">true</property>
- <property name="format_sql">true</property>
- <!-- 配置数据库方言 -->
- <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
- <!-- 配置数据库连接 -->
- <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
- <property name="connection.username">cksd0804</property>
- <property name="connection.password">cksd0804</property>
- <property name="connection.url">jdbc:oracle:thin:@192.168.0.200:1521:ORADB10G</property>
- <!-- 配置连接池 -->
- <property name="c3p0.max_size">2</property>
- <property name="c3p0.min_size">2</property>
- <property name="c3p0.timeout">5000</property>
- <property name="c3p0.max_statements">100</property>
- <property name="c3p0.idle_test_period">3000</property>
- <property name="c3p0.acquire_increment">2</property>
- <property name="c3p0.validate">false</property>
- <!-- 指定hibernate管理的映射文件 -->
- <!--<mapping resource="com/kettas/hibernate/day1/Users.hbm.xml"/>-->
- <!--<mapping resource="com/kettas/hibernate/day1/Account.hbm.xml"/>-->
- <!--<mapping resource="com/kettas/hibernate/orm/o2o/fkuk/CarLicense.hbm.xml"/>-->
- <mapping resource="com/kettas/hibernate/orm/o2m/CompanyEmployee.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
---------vlog4j.properties------------
- ### direct log messages to stdout ###
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### direct messages to file hibernate.log ###
- #log4j.appender.file=org.apache.log4j.FileAppender
- #log4j.appender.file.File=hibernate.log
- #log4j.appender.file.layout=org.apache.log4j.PatternLayout
- #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### set log levels - for more verbose logging change 'info' to 'debug' ###
- log4j.rootLogger=warn, stdout
- #log4j.logger.org.hibernate=info
- log4j.logger.org.hibernate=debug
- ### log HQL query parser activity
- #log4j.logger.org.hibernate.hql.ast.AST=debug
- ### log just the SQL
- #log4j.logger.org.hibernate.SQL=debug
- ### log JDBC bind parameters ###
- log4j.logger.org.hibernate.type=info
- #log4j.logger.org.hibernate.type=debug
- ### log schema export/update ###
- log4j.logger.org.hibernate.tool.hbm2ddl=debug
- ### log HQL parse trees
- #log4j.logger.org.hibernate.hql=debug
- ### log cache activity ###
- #log4j.logger.org.hibernate.cache=debug
- ### log transaction activity
- #log4j.logger.org.hibernate.transaction=debug
- ### log JDBC resource acquisition
- #log4j.logger.org.hibernate.jdbc=debug
- ### enable the following line if you want to track down connection ###
- ### leakages when using DriverManagerConnectionProvider ###
- #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
------------测试Java程序------------
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- public class TestCar {
- public static void main(String[] args) {
- Configuration cfg=new Configuration().configure(); //创建配置,启动Hibernate读xml文件
- SessionFactory sf=null;
- Session sess=null;
- Transaction ta=null;
- try{
- sf=cfg.buildSessionFactory(); //构造会话工厂SessionFactory
- sess=sf.openSession(); //打开会话Session
- ta=sess.beginTransaction(); //启动事物
- Car c=new Car("qq","111");
- License license=new License("6666","minyong"); //持久化操作
- c.addLicense(license);
- sess.save(license);
- ta.commit(); //提交事务
- }catch(Exception e){
- e.printStackTrace();
- ta.rollback(); //回滚事务
- }finally{
- sess.close(); //释放资源
- sf.close();
- }
- }
- }