Hibernate学习(1)----Hibernate快速上手

1.获取Hibernate,可到Hibernate组织的网站下载最新版本,http://www.hibernate.org。同时由于Hibernate加入了JBoss组织,所以也可从JBoss组织(http://www.jboss.org)获得技术支持。我用的是Hibernate3.0。下载到的软件包中有:Hibernate3.jar,其他引用的Jar文件在LIB子目录下,其源代码和测试用例位于src和test子目录下。 

2.配置开发环境

2.1:下载Eclipse3.2.1,J2se5.0,配合Eclipse3.2.1使用JBossIDE1.4.0,可利用Eclipse的升级功能。升级站点为:

http://jboss.sourceforge.net/jbosside/updates

2.2:启动Eclipse,创建名为“Chapter02”的JAVA项目,添加src和lib目录,将Hibernate发行包中的Hibernate3.jar和lib子目录下的所有jar文件,包含Mysql数据库驱动的Jar文件一起复制到Chapter02项目的lib文件目录中。并将其导入此项目的CLASSPATH中,并添加log4j.properties属性文件类配置Hibernate的log输出。同时还使用到一个监视数据库状态的工具--JFaceDBC工具,可到http://jfacedbc.sourceforge.net下载。

3.开发实例

3.1在MYSQL中建立一个名为hibernate的数据库:

CREATE DATABASE hibernate;

USE hibernate;

3.2设计名为Computer的数据表:

create table computer(

id int(11) not null primary key auto_increment,

cpu varchar(50),

mainboard varchar(50)

);

3.3在项目的src目录下创建hibernate.cfg.xml文件,这个文件用于配置hibernate。在代码的com.joy_cz.computer包路径下创建Computer类和与名称相对应的Computer.hbm.xml映射文件

3.3.1hibernate.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="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="connection.url">jdbc:mysql://localhost/hibernate</property>

<property name="connection.username">root</property>

<property name="connection.password">123456</property>

<mapping resource="com/joy_cz/computer/computer.hbm.xml"/>

</session-factory></hibernate-configuration>

dialect:数据库方言。

connection.dirver_class:数据库驱动名

3.3.2*.hbm.xml文件

Hibernate用以hbm.xml结尾的文件描述POJO对象和数据库资源的映射关系,称为映射文件。严格遵守标准的配置文件的第一部分应该与POJO的类名一致,放置的位置也应该与对应的POJO类的包路径一致,这样做是为了方便在Hibernate程序中以资源的方式导入这些配置文件。例如:Computer.hbm.xml对应com.joy_cz.computer.Computer,而且Computer.hbm.xml文件被放置在com/joy_cz/computer路径下。其文件如下:

<?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-mapping>

<class name ="com.joy_cz.computer.Computer">

<id name="id" type="int">

<generator class="native"/>

</id>

<property name="cpu" length="50"/>

<property name="mainboard" length="50"/>

</class>

</hibernate-mapping>

对应的Computer类如下:

package com.joy_cz.computer;

public class Computer {
 private int id;
 private String cpu;
 private String mainboard;
 public String getCpu()
 {
  return cpu;
 }
 public void setCpu(String cpu){
  this.cpu=cpu;
 }
 public String getMainboard(){
  return mainboard;
 }

public void setMainboard(String mainboard){

this.mainboard=mainboard;

}
 public int getId(){
  return id;
 }
}
在Computer代码中,每个映射文件中列出的字段都必须拥有自己的getXX和setXX方法,方法的命名方式必须符合JavaBean的规范。

3.3.3配置log4j.properties文件

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.rootLogger=warn,stdout

完成了以上的配置后,就可以利用Hibernate的API进行数据持久化的编程了。

4.下面的程序实现了向Computer数据库表插入了一条新的数据记录的功能。

package com.joy_cz.computer;

import java.sql.SQLException;

import org.apache.log4j.PropertyConfigurator;

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class ComputerCreate{

public static void main(String[] args) throws HibernateException{

//配置log4j.Properties

PropertyConfigurator.configure("log4j.properties");

//从hibernate.cfg.xml导入Hibernate配置数据

Configuration cfg=new Configuration();

cfg.configure();

//创建一个Hibernate的会话工厂

SessionFactory sf=cfg.buildSessionFactory();

//创建一个hibernate会话

Session sess=sf.openSession();

//新建一个Computer对象

Computer pc=new Computer();

//把新记录的数据设置到Computer对象中

pc.setCpu("Intel奔腾 4 2.4GB");

pc.setMianboard("技佳");

//利用hibernate会话保存Computer对象到数据库

sess.save(pc);

//提交当前Hibernate会话的数据

sess.flush();

try{

//提交Hibernate会话连接的状态

sess.connection().commit();}catch(HibernateException e){

e.printStackTrace();

}catch(SQLException e){e.printStackTrace();}

sess.close();}}

你可能感兴趣的:(xml,log4j,mysql,Hibernate,jboss)