首页 > 程序开发 > 软件开发 > 其他 > 正文
Hibernate笔记一(Hibernate简单配置和操作)
2017-05-19       个评论    来源:仵晨曦的博客  
收藏    我要投稿

Hibernate


1.什么是Hibernate?

Hibernate是一个ORM(Object/Relationship Mapping)框架,即对象关系映射。就是将对象中的属性和数据库中的字段通过映射的关系一一对应起来。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。

2.Hibernate配置

Hibernate核心配置文件
官方推荐将Hibernate核心配置文件命名为hibernate.cfg.xml,直接放到项目的src目录之下。核心配置文件配置如下:





    
        
        root
        
        root
        
        jdbc:mysql:///hibernate?characterEncoding=utf-8
        
        com.mysql.jdbc.Driver
        
        org.hibernate.dialect.MySQLDialect
        
        true
        
        true
        
        update

        
        
    
实体类:在使用Hibernate时,实体类推荐的定义方法是:
1.属性私有化; 2.显现定义出无参构造 3.要有标准的getter和setter方法
public class Student {

    private int id;
    private int age;
    private String name;
    private String address;
    private Date birthday;
    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Student(int age, String name, String address, Date birthday) {
        super();
        this.age = age;
        this.name = name;
        this.address = address;
        this.birthday = birthday;
    }

    public Student(int id, int age, String name, String address, Date birthday) {
        super();
        this.id = id;
        this.age = age;
        this.name = name;
        this.address = address;
        this.birthday = birthday;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }   
}
实体类的映射文件:实体类的映射文件命名格式推荐是Person.hbm.xml,即 实体类的类名+.hbm+.xml





    
    
        
        
            
            
        
        
            
        
        
        
            
        
        
            
        
        
        
            
        
    


3.Hibernate的简单使用

定义工具类
    public class HibernateUtil {

    private static SessionFactory sessionFactory;
    static {
        Configuration configuration = new Configuration();
        // 加载Hibernate核心配置文件并解析
        configuration.configure();
        //获取session工厂对象
        sessionFactory = configuration.buildSessionFactory();
    }
    /**
     * 获取工厂对象
     * @return
     */
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    /**
     * 获取session对象
     * @return
     */
    public static Session getSession() {
        return sessionFactory.openSession();
    }
    /**
     * 关闭session对象
     * @param s
     */
    public static void close(Session s) {
        if (s != null)
            s.close();
    }
测试
public class StudentTest {

    private Session session;
    private Transaction transaction;

    /**
     * 创建session对象,开启事务
     */
    @Before
    public void init() {
        session = HibernateUtil.getSession();
        transaction = session.beginTransaction();
    }
    /**
     * 提交事务,关闭session对象
     */
    @After
    public void distroy() {
        transaction.commit();
        HibernateUtil.close(session);
    }
    /**
     * 添加学生
     */
    @Test
    public void testSaveStudent() {
        Student student = new Student(10, "李四", "北京", new Date());
        session.save(student);

    }
    /**
     * 查询所有学生信息
     */
    @Test
    public void testQueryAll(){
        List students = session.createQuery("from Student").list();
        System.out.println(students);
    }
    /**
     * 根据id查询学生信息
     */
    @Test
    public void testQueryById(){
        System.out.println(session.get(Student.class, 1));
    }
    /**
     * 根据id修改学生信息
     */
    @Test
    public void testUpdate(){
        Student student = new Student(1,10, "王五", "上海", new Date());
        session.update(student);
    }
    @Test
    /**
     * 根据id删除学生信息
     */
    public void testDelById(){
        Student student = new Student(2);
        session.delete(student);
    }
}

从测试的情况我们可以看出,Hibernate使我们的开发不用再书写繁琐的sql语句,而是针对对象进行编程。从这也可以看出Hibernate确实减轻了我们开发人员不少工作量。以上只是对Hibernate基本的介绍和操作。针对Hibernate对表与表之间的关联在以后的笔记中进行讲解。

点击复制链接 与好友分享!回本站首页
上一篇:ActiveMQ 的安装与使用(单节点)
下一篇:数据库连接池原理详解与自定义连接池实现
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站