Hibernate快速入门案例——手动增加记录

来源:互联网 发布:堀北真希电影网域名 编辑:程序博客网 时间:2024/06/07 01:25
一 介绍
Hiberante可以用在J2SE项目,也可以用在J2EE(web项目中)。
Struts是web框架,所以用在web项目。
二 基本原理和项目框架图示意图
三 开发流程
1 创建一个项目。
2 画出一个简单项目框架示意图。
3 引入Hibernate开发包。
http://www.hibernate.org
4 开发Hibernate有三种方法(开发顺序)。
4.1 由Domain object -> mapping->db。(官方推荐)
4.2 由DB开始,用工具生成mapping和Domain object。(使用较多)
4.3 由映射文件开始。
在此我们使用第2种方法。
5 创建employee表,使用Mysql数据库
CREATE TABLE `employee` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) NOT NULL,  `email` varchar(255) NOT NULL,  `hiredate` date NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;


开发domain对象
6.1 什么是POJO
在使用hibernate时,要求和数据库的某张表相互映射的那个java类,是一个POJO类,一般放在com.xxx.domain下,POJO类翻译过来就是:简单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来。
一个POJO类应当具有:
①有一个主键属性,用于唯一标识该对象。(这就是为什么hibernate设计者建议要映射的表需要一个主键)
②有其它的属性
③有对各个属性操作的get/set方法
④属性一般是private修饰
⑤一定有一个无参的构造函数(用于hibernate框架反射用)
6.2 实例
package com.cakin.domain;/* * 建议我们的domain对象的名称就是对应表的首字母大写 * domain、javabean、pojo【plain old/ordinary java object 简单的java对象】 */public class Employee {        private Integer id;        private String name;        private String email;        private java.util.Date hiredate;        public Integer getId() {                return id;        }        public void setId(Integer id) {                this.id = id;        }        public String getName() {                return name;        }        public void setName(String name) {                this.name = name;        }        public String getEmail() {                return email;        }        public void setEmail(String email) {                this.email = email;        }        public java.util.Date getHiredate() {                return hiredate;        }        public void setHiredate(java.util.Date hiredate) {                this.hiredate = hiredate;        }     }



7 对象关系映射文件
7.1 概念
对象关系映射文件: 作用是用于指定domain对象和表的映射关系。
该文件的取名有规范:domain对象.hbm.xml,一般我们放在 和domain对象同一个文件夹(包)下。
7.2 实例
<?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 package="com.cakin.domain" >    <class name="Employee" table="employee">                <!-- 配置主键属性 -->        <id name="id" type="java.lang.Integer">            <column name="id" />            <generator class="increment" />        </id>             <!--  对其他属性进行配置-->         <property name="name" type="java.lang.String" >            <column name="name"   not-null="true"/>        </property>        <property name="email" type="java.lang.String">            <column name="email" />        </property>        <property name="hiredate" type="java.util.Date">            <column name="hiredate" />        </property>    </class></hibernate-mapping>



8 手动配置我们的hibernate.cfg.xml
8.1 概念
该文件用于配置连接的数据库的类型,driver,用户名,密码 ,url,同时管理对象关系映射文件 ,该文件的名称,我们一般不修改。
8.2 实例
<?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";><!--  该文件用来配置domain对象和表的映射关系--><hibernate-configuration>        <session-factory>                <!--hibernate设计者为我们提供了一些常用的设置-->                <property name="dialect">org.hibernate.dialect.MySQLDialect</property>        <property name="hibernate.connection.url">                <![CDATA[                        jdbc:mysql://localhost:3306/users?useUnicode=true&characterEncoding=utf8                ]]>        </property>                <property name="connection.username">root</property>                <property name="connection.password">waDY820828</property>                <!--配置使用的driver  -->                <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>                <property name="show_sql">true</property>        <property name="hbm2ddl.auto">create</property>        <!--指定关系对象映射文件  -->                <mapping resource="com/cakin/domain/Employee.hbm.xml" />        </session-factory></hibernate-configuration>



9 测试代码
package com.cakin.view;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import com.cakin.domain.Employee;public class TestMain {        /**         * @param args         */        public static void main(String[] args) {                // TODO Auto-generated method stub                //我们使用对hibernate完成crud操作,只里只见对象,不见表                // 现在我们不用service,直接测试                //1、创建Configuration,该对象用于读取hibernate.cfg.xml,并完成初始化                Configuration configuration = new Configuration().configure();                //2、创建SessionFactory,这是一个会话工厂,是一个重量级的对象                SessionFactory sessionFactory=configuration.buildSessionFactory();                //3、创建Session,向当于jdbc的Connection                Session session = sessionFactory.openSession();                //4、要求程序员在进行增删改的时候使用事务提交,否则不生效                Transaction transaction=session.beginTransaction();                //添加一个雇员                Employee employee = new Employee();                employee.setName("cakin");                employee.setEmail("cakin@qq.com");                employee.setHiredate(new Date());                //保存                session.save(employee); //inert into ...[被hibernate封装]                transaction.commit();                session.close();        }}



10 测试结果
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 憋尿导致小腹痛怎么办 蛋蛋撞到了很疼怎么办 睾丸被压了好痛怎么办 睾丸皮肤痒破了怎么办 鸡儿下面了蛋痒怎么办? 射精后小腹胀该怎么办 手压伤了有淤血怎么办 手挤压伤了肿了怎么办 手被挤压肿了怎么办 手砸伤了肿了怎么办 手被机器压伤了怎么办 上眼皮眼睛肿了怎么办 上眼皮内有淤血怎么办 种睫毛眼睛红痛怎么办 一只眼睛变红了怎么办 黑眼球缺了一角怎么办 眼镜度数配高了怎么办 孩子近视800度可怎么办 儿童眼睛近视怎么办才能恢复正常 小孩眼睛近视怎么办才能恢复正常 3岁宝宝近视怎么办啊 6个月婴儿近视怎么办 近视眼的人老了怎么办 一千多度的近视怎么办 近视镜片磨花了怎么办 眼镜镜片磨花了怎么办 戴眼镜鼻梁有印怎么办 狗狗发烧怎么办最有效 狗狗感冒怎么办最有效 狗狗发烧去医院怎么办 眼睛里长了虫子怎么办 吃了没熟的猪肉怎么办 没熟的鸡肉吃了怎么办 狗狗大便有绦虫怎么办 吃了有虫的猪肉怎么办 米猪肉吃了会怎么办 吃了鱼的寄生虫怎么办 鱼身体里有线虫怎么办 幼猫半夜一直叫怎么办 猫半夜4点叫不停怎么办 眼睛里长了黄斑怎么办