使用Eclipse无插件搭建一个简单的Hibernate项目

网上的SSH集合框架随处可见,但如果我只想单纯搭建Hibernate项目该怎么办呢?
MyEclipse可以帮助我们快速搭建框架,但在没有插件的情况下该如何搭建一个Hibernate项目呢?
于是昨晚看了一些博客,终于在Eclipse中搭建好了自己的第一个Hibernate项目,总结如下:


相关Jar包

antlr-2.7.7.jar
dom4j-1.6.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
hibernate-core-5.0.7.Final.jar
hibernate-commons-annotations-5.0.1.Final.jar
hibernate-entitymanager-5.0.7.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-2.0.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.3.0.Final.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.13-bin.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.7.2.jar
Jar包下载:

http://pan.baidu.com/s/1pLmCZuN


项目结构

src
| —— entity
| —— | —— User.java [实体类]
| —— hibernate
| —— | —— config
| —— | —— | —— hibernate.cfg.xml [Hibernate核心配置]
| —— | —— mapping
| —— | —— | —— User.hbm.xml [对象关系映射配置]
| —— | —— utils
| —— | —— | —— HibernateUtil.java [Hibernate工具类]
| —— test
| —— | —— UserTest.java [测试类]


项目结构


Hibernate核心配置


[ 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">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库驱动和连接地址 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
        <!-- 数据库用户名和密码 -->
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <!-- 数据库连接池大小 -->
        <property name="hibernate.connection.pool.size">15</property>

        <!-- 分别是批量查询和批量增删改操作的数量,数值越大,内存损耗越大 -->
        <property name="jdbc.fetch_size">50</property>
        <property name="jdbc.batch_size">50</property>
        <!-- 结果集是否可滚动 -->
        <property name="jdbc.use_scrollable_resultset">false</property>

        <!-- 连接数据库时是否使用Unicode编码 -->
        <property name="Connection.useUnicode">true</property>
        <!-- 数据的编码方式 -->
        <property name="connection.characterEncoding">utf-8</property>

        <!-- 数据库“方言”类,它能将不同类型的sql语法转换成统一格式 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 是否在控制台输出sql语句 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 对象关系映射配置文件 -->
        <mapping resource="hibernate/mapping/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>

数据库表和实体类

1.创建数据库和表
CREATE DATABASE test;

CREATE TABLE `user` (
  `id` varchar(8) NOT NULL,
  `name` varchar(16) NOT NULL default '' COMMENT '用户名',
  `pwd` varchar(16) NOT NULL default '' COMMENT '密码',
  `sex` tinyint(1) default '1' COMMENT '性别',
  `join_date` date default NULL COMMENT '注册时间',
  PRIMARY KEY  (`id`)
);
2.创建实体类

实体类的属性跟数据库表的字段一一对应

[ User.java ]

package entity;

import java.util.Date;

public class User {

    private String id;      // id
    private String name;    // 用户名
    private String pwd;     // 密码
    private int sex;        // 性别
    private Date joinDate;  // 注册时间

    public User() {}

    public User(String id, String name, String pwd, int sex, Date joinDate) {
        super();
        this.id = id;
        this.name = name;
        this.pwd = pwd;
        this.sex = sex;
        this.joinDate = joinDate;
    }

    // getters and setters ...

}
3.创建对象关系映射配置

即类属性和表字段的对应关系,Hibernate将根据该配置对数据库进行操作

[ User.hbm.xml ]

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="entity">
    <class name="User" table="user">
        <id name="id" column="id" />
        <property name="name" type="string" column="name" />
        <property name="pwd" type="string" column="pwd" />
        <property name="sex" type="int" column="sex" />
        <property name="joinDate" type="date" column="join_date" />
    </class>
</hibernate-mapping>

Hibernate工具类

该工具类用于创建Session对象,Hibernate通过该对象对数据库进行操作

[ HibernateUtil.java ]

package hibernate.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    // 读取Hibernate配置文件并初始化SessionFactory
    static {
        String path = "hibernate/config/hibernate.cfg.xml";
        Configuration config = new Configuration().configure(path);
        factory = config.buildSessionFactory();
    }

    private static SessionFactory factory;

    /**
     * 获取开启着的session
     * @return
     */
    public static Session getSession() {
        return factory.openSession();
    }

    /**
     * 关闭session
     * @param session
     */
    public static void closeSession(Session session) {
        if (session != null) {
            if (session.isOpen()) {
                session.close();
            }
        }
    }

    /**
     * 获取SessionFactory
     * @return
     */
    public static SessionFactory getSessionFactory() {
        return factory;
    }

}

测试

在这里,我使用了JUnit进行测试

[ UserTest.java ]

package test;

import hibernate.utils.HibernateUtil;
import org.hibernate.Session;
import entity.User;
import org.junit.Test;
import java.util.Date;

public class UserTest {

    /** 
     * 添加测试
     * */
    @Test
    public void addTest() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();     // 开始事务
        User user = new User("001", "YoriChan", "123456", 1, new Date());
        session.save(user);
        session.getTransaction().commit();
        System.out.println("添加成功");
        HibernateUtil.closeSession(session);
        // 添加成功
    }

    /** 
     * 删除测试
     * */
    @Test
    public void deleteTest() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        User user = new User();
        user.setId("001");
        session.delete(user);
        session.getTransaction().commit();
        System.out.println("删除成功");
        HibernateUtil.closeSession(session);
        // 删除成功
    }

    /**
     * 修改测试
     * */
    @Test
    public void updateTest() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        User user = new User("001", "陈昱霖", "123456", 1, new Date());
        session.update(user);
        session.getTransaction().commit();
        System.out.println("修改成功");
        HibernateUtil.closeSession(session);
        // 修改成功
    }

    /** 
     * 查询测试
     * 通过用户id进行查询
     * */
    @Test
    public void findTest() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        User user = session.load(User.class, "001");
        System.out.println("查询结果:" + user.getName());
        HibernateUtil.closeSession(session);
        // 查询结果:YoriChan
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值