hibernate框架主要是实现数据库与实体类间的映射,使的操作实体类相当与操作hibernate框架。
只要实体类写好配置文件配好,就能实现和数据库的映射,其中实体类对应表,类的属性对应数据库的表字段。 这样就不用管数据库的相关操作了。
一:映射
下面介绍使用hibernate框架实现简单的单表和实体间的映射。
如学生实体类Student映射成数据库中的T_student表

首先需要我们编写实体类,提供属性的set get方法

实体类和数据库表的映射全靠映射文件,也就是xml配置文件,配置文件是和实体类对应的,一个实体类对应一个映射配置文件。配置文件内容解析如下:

二:使用
1,环境配置
配置Hibernate框架的环境,需要拷贝框架的jar包到我们程序中,常用的jar包一般有14个,如下图:

2,创建javabean对象(以User为例)
对象的属性一般与对应表中的字段一致,需要提供每个属性的set、get方法,用工具生成就行了,不用工具生成的话,一定要注意命名规范,属性的名称首字母大写后在前面加set或get字段。
3,配置hibernate.cfg.xml文件
配置一个关联与特定数据库全局的工厂<SessionFactory>如果要使用多个数据库,就多配置一个<SessionFactory>标签,标签中制定连接数据库的信息。
我们需要把配置文件存在在项目的src下面,Hibernate启动时会自动到classpath根目录下面查找名为hibernate.cfg.xml文件,所以配置文件的名称不要更改。
- <span style="font-size:18px;"><?xmlversionxmlversion="1.0" encoding="UTF-8"?>
- <!DOCTYPEhibernate-configuration PUBLIC
- "-//Hibernate/HibernateConfiguration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
- <hibernate-configuration>
- <session-factory>
-
- <propertynamepropertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/egov</property>
- <propertynamepropertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <propertynamepropertyname="hibernate.connection.username">egov</property>
- <propertynamepropertyname="hibernate.connection.password">egov</property>
-
- <propertynamepropertyname="show_sql">true</property>
- <propertynamepropertyname="hibernate.format_sql">true</property>
- <propertynamepropertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
-
- <mappingresourcemappingresource="com/hibernate/pojo/User.hbm.xml"/>
-
- </session-factory>
- </hibernate-configuration></span>
4,配置映射文件
映射文件是和javabean对象对应的,一般以对象的名称加.xml文件命名,映射文件的作用就是要告诉Hibernate应该访问数据库的哪个表以及表中的哪个对象。
在hibernate-mapping标签(tag)之间,含有一个class元素。所有的持久化实体类(再次声明,或许接下来会有依赖类,就是那些次要的实体)都需要一个这样的映射,来把类对象映射到SQL数据库里的表。
- <span style="font-size:18px;"><hibernate-mapping>
- <class name="beanname" table="tablename"/>
- </hibernate-mapping>
- </span>
配置好映射文件后需要在hibernate.cfg.xml文件中配置<mapping resource
>
标签,指向刚定义的映射文件。
实例:
- <span style="font-size:18px;"><?xmlversionxmlversion="1.0" encoding="UTF-8"?>
- <!DOCTYPEhibernate-mapping PUBLIC
- "-//Hibernate/HibernateMapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="com.hibernate.pojo.User" table="t_user"lazy="true">
-
- <id name="username" column="username"length="20">
- <generatorclassgeneratorclass="assigned"/>
- </id>
-
- <propertynamepropertyname="userpswd" column="userpswd" length="20"not-null="true"/>
-
- </class>
- </hibernate-mapping></span>
5,编写dao层
- <span style="font-size:18px;">public class UserDao{
- public void insert(User user){
-
- Configurationconfig = new Configuration().configure();
-
- SessionFactorysf = config.buildSessionFactory();
-
-
- Sessionsession = null;
- Transactiontx = null ;
- try{
- session= sf.openSession();
-
- tx= session.beginTransaction();
-
- session.save(user);
-
-
- tx.commit();
- }catch(Exceptione){
- e.printStackTrace();
- tx.rollback();
- }finally{
- if(session!=null){
- session.close();
- }
- }
- }
- }</span>
6,编写测试类
以上四步完成后就可以进行测试了,看配置的信息能否成功插入一条数据。
- <span style="font-size:18px;">public static void main(String args[]){
- Useruser = new User();
- user.setUsercode("zhangsan");
- user.setUserpswd("123");
- user.setOrgtype("1");
- user.setRegdate("2014-03-0711:56:00");
- user.setUsername("张三");
-
-
- UserDaodao = new UserDao();
- dao.insert(user);
- }</span>
为了测试么,我们直接new的dao层对象,在实际项目中hibernate框架和spring框架和struts2框架结用,创建对象和组合对象的关系交给spring去完成。这样层与层之间就不会耦合了。