2、hibernate关键API
来源:互联网 发布:德州理工大学 知乎 编辑:程序博客网 时间:2024/05/18 00:24
- 创建Hibernate的配置文件
- 创建持久化类
- 创建对象——关系映射文件
- 通过Hibernate API编写访问数据库的代码
有两种配置文件:Hibernate配置文件,主配置文件,一个;对象——关系映射文件
配置MyEclipse使用struts和Hibernate
1、手工配置MyEclipse使用Hibernate
下载Hibernate包:hibernate-distribution-3.6.10.Final-dist.zip
2、在MyEclipse中创建Web project,增加struts支持,将struts涉及的包拷贝到新建web项目的WEB-INF\lib下,包括:commons-fileupload-1.2.2.jar、commons-io-2.0.1.jar、commons-lang3-3.1.jar、commons-logging-1.1.1.jar、dom4j-1.6.1.jar、javassist-3.11.0.GA.jar、struts2-core-2.3.14.jar、xwork-core-2.3.14.jar
因为是增加struts,所以要对web.xml进行配置,将struts的filter加进去:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Hibernate与Web无关,所以只要配置Struts就行了。
然后在src目录下新建struts.xml文件:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="hibernate" extends="struts-default"></package></struts>
至此,struts的集成完成了
3、hibernate的集成
(1)点击Web项目,在MyEclipse中点击MyEclipse——Project capabilities——add hibernate capabilities,在这个界面中,将JAR Library Installation选为Copy checked libraryJars to project folder and add to build-path项,其他不动点击next
(2)进入hibernate配置文件创建配置页面,如果存在hibernate配置文件,选择Existing,否则选择New,这里选New,然后next
(3)数据库连接细节配置,因为要手工配置,这里将勾选项去掉,然后next
(4)session工厂创建,因为要手工配置,这里将勾选项去掉,然后finish
这时在src目录下创建了hibernate.cfg.xml文件(hibernate主配置文件):
<?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> </session-factory></hibernate-configuration>
主配置文件的一个作用就是配置数据库连接的信息
hibernate.cfg.xml的配置:
<session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">qwerty123</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="show_sql">true</property> </session-factory>
连接数据库需要数据库的url,即connection.url,需要登录的用户名和密码,需要数据库的驱动类,再就是数据库的方言,即dialect,最后的show_sql指出在执行hibernate查询时是否显示对应的sql语句。
4、创建持久化类
持久化类符合JavaBean的规范,包含一些属性,以及与之对应的get和set方法
持久化类有一个id属性,用来惟一标识Person类的每一个对象。在面向对象术语中,这个id属性被称为对象标示符(OID)
hibernate要求持久化类必须提供一个不带参数的默认构造方法。
import java.sql.Date;public class Person{private Integer id;private String username;private String password;private Integer age;private Date registerDate;public Integer getId(){return id;}public void setId(Integer 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;}public Integer getAge(){return age;}public void setAge(Integer age){this.age = age;}public Date getRegisterDate(){return registerDate;}public void setRegisterDate(Date registerDate){this.registerDate = registerDate;}}
在mysql中创建hibernate数据库,然后创建表person,
/* Formatted on 2013/08/27 09:38 (QP5 v5.50) */CREATE TABLE `person` ( `id` int(11) NOT NULL, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `age` int(11) NOT NULL, `registerDate` date NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;5、创建前端注册页面:
<body> <form action="savePerson.action"> username:<input type="text" name=username" size="20"/><br/> password:<input type="password" name="password" size="20"/><br/> age:<input type="text" name="age" size="20"/><br/> <input type="submit" value="submit"/> </form> </body>
6、创建action,因为注册页面涉及到提交action了
import com.cdtax.model.Person;import com.cdtax.service.PersonService;import com.cdtax.service.impl.PersonServiceImpl;import com.opensymphony.xwork2.ActionSupport;public class PersonAction extends ActionSupport{private String username;private String password;private int age;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;}public int getAge(){return age;}public void setAge(int age){this.age = age;}public String savePerson() throws Exception{Person person = new Person();person.setUsername(username);person.setPassword(password);person.setAge(age);java.sql.Date registerDate = new java.sql.Date(new java.util.Date().getTime());person.setRegisterDate(registerDate);PersonService personService = new PersonServiceImpl();personService.savePerson(person);return SUCCESS;}}
然后配置struts.xml
<struts><package name="hibernate" extends="struts-default"><action name="savePerson" class="com.cdtax.action.PersonAction" method="savePerson"></action></package></struts>
对于一个应用,前端页面调用action,action调用service层,service层调用dao层,这里action调用PersonService,对于上层,下层只提供接口,所以定义一个接口,定义一个实现:
public interface PersonService{public void savePerson(Person person);}
import com.cdtax.dao.PersonDAO;import com.cdtax.dao.impl.PersonDAOImpl;import com.cdtax.model.Person;import com.cdtax.service.PersonService;public class PersonServiceImpl implements PersonService{public void savePerson(Person person){PersonDAO personDAO = new PersonDAOImpl();personDAO.savePerson(person);}}
service层调用DAO层,一样使用接口和实现
public interface PersonDAO{public void savePerson(Person person);}
import org.hibernate.Session;import org.hibernate.Transaction;import com.cdtax.dao.PersonDAO;import com.cdtax.model.Person;import com.cdtax.util.HibernateUtil;public class PersonDAOImpl implements PersonDAO{public void savePerson(Person person){Session session = HibernateUtil.openSession();Transaction tx = session.beginTransaction();try{session.save(person);tx.commit();}catch(Exception ex){if(null != tx){tx.rollback();}ex.printStackTrace();}finally{HibernateUtil.close(session);}}}
DAOImpl具体实现数据的增删改查操作,这里又定义了一个工具类HibernateUtil:
import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil{private static SessionFactory sessionFactory;static{try{sessionFactory = new Configuration().configure().buildSessionFactory();}catch(Exception ex){ex.printStackTrace();}}public static Session openSession(){Session session = sessionFactory.openSession();return session;}public static void close(Session session){if(null !=session){session.close();}}}
用于session的管理。
7、然后就要配置对象——关系映射,就是类与表的对应
在src下创建配置文件,文件的命名规则是:类名+.hbm.xml,这里是对Person类和person表进行对应,建立Person.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="com.cdtax.model.Person" table="person"><id name="id" column="id" type="int"><generator class="increment"></generator></id><property name="username" column="username" type="string"></property><property name="password" column="password" type="string"></property><property name="age" column="age" type="int"></property><property name="registerDate" column="registerDate" type="date"></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"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">qwerty123</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="show_sql">true</property> <mapping resource="Person.hbm.xml" /> </session-factory></hibernate-configuration>
8、映射关系表
对象——关系映射表,以<hibernate-mapping>为根元素,然后是若干class子元素,class子元素用来描述对象与哪个表对应以及对象属性与表中的哪列对应
<class name="com.cdtax.model.Person" table="person">说明Person对象与表person对应,将来数据保存在person表中;
<id name="id" column="id" type="int"><generator class="increment"></generator></id>用来指出对象的OID以及表的主键列名对应关系及类型
<property name="username" column="username" type="string"></property>
<property name="password" column="password" type="string"></property>
<property name="age" column="age" type="int"></property>
<property name="registerDate" column="registerDate" type="date"></property>用来指出其他对象属性与表字段的对应关系及类型,name是对象的属性,column是表的字段
9、运行程序,在注册页面填入信息然后点击submit,在myeclipse执行窗口出现:
Hibernate: select max(id) from person
Hibernate: insert into person (username, password, age, registerDate, id) values (?, ?, ?, ?, ?)
数据插入到了person表中。
10、重要的API:
SessionFactory 、 Configuration、Session等。
- 2、hibernate关键API
- Hibernate关键API详解
- HBase java关键API
- Hibernate关键点整理
- hibernate学习关键知识
- Hibernate的关键点
- 使用hibernate几个关键
- Struts-2 + Spring-2.5 + Hibernate-3 整合关键点
- Hibernate Api
- hibernate API
- 【Hibernate】 Api
- Hibernate API
- hibernate-api
- Hibernate小程序关键代码
- Hibernate的一些关键知识
- 2、Hibernate概念和api的使用
- OpenGL ES 关键API小结(转)
- Android google map api v2 使用关键
- 内核熵池entropy pool
- 文件读写的实用工具
- linux系统架构师需求
- Java WeakReference与SoftReference
- NtQuerySystemInformation 函数简单解析
- 2、hibernate关键API
- 【转】Linux下awk命令合并多文件方法
- 从标准输入读取
- SliceM与SliceL
- 选择排序
- SVN版本冲突,commit时出现.mine等文件
- 五招加速网页响应时间(1/2)
- 冒泡排序
- 备忘:使用无线连接adb调试