文档章节

hibernate小小demo

xiejunbo
 xiejunbo
发布于 2015/04/11 15:22
字数 691
阅读 18
收藏 0

开发流程:

1 下载并安装Hibernate

2 Hibernate配置文件详解 配置与MySQL数据库的链接与映射文件User.hbm.xml

3 生成映射文件User.hbm.xml

4 编写持久化类User.java

5 编写辅助类HibernateSessionFactory.java 负责取得和关闭Hibernate的Session对象

6 编写DAO类UserDAO.java 编写根据用户名取得用户对象的getUser()

7 编写Service类UserService.java 编写valid()函数 调用UserDAO.java的getUser()函数执行函数验证


  1. 下载并安装Hibernate

    hibernate-3.0.zip

  2. hibernate.cfg.xml配置文件:

  3. <?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="myeclipse.connection.profile">
                JDBC for MySQL
            </property>
            <property name="connection.url">
                jdbc:mysql://localhost:3306/demo
            </property>
            <property name="connection.username">root</property>
            <property name="connection.password">root</property>
            <property name="connection.driver_class">
                org.gjt.mm.mysql.Driver
            </property>
            <property name="dialect">
                org.hibernate.dialect.MySQLDialect
            </property>
            <mapping resource="com/demo/hibernate/beans/User.hbm.xml" />
    
    
        </session-factory>
    
    </hibernate-configuration>



3. User.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" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<!-- Created Tue Aug 14 18:57:22 CST 2007 -->
<hibernate-mapping package="com.demo.hibernate.beans">

    <class name="User" table="user">
        <id name="id" column="ID" type="integer">
            <generator class="native"/>
        </id>

        <property name="username" column="username" type="string" />
        <property name="password" column="password" type="string" />
        <property name="email" column="email" type="string" />
    </class>
    
</hibernate-mapping>

4.User.java:

package com.demo.hibernate.beans;

public class User {
    private java.lang.Integer id;

    private java.lang.String username;

    private java.lang.String password;

    private java.lang.String email;

    public java.lang.String getEmail() {
        return email;
    }

    public void setEmail(java.lang.String email) {
        this.email = email;
    }

    public java.lang.Integer getId() {
        return id;
    }

    public void setId(java.lang.Integer id) {
        this.id = id;
    }

    public java.lang.String getPassword() {
        return password;
    }

    public void setPassword(java.lang.String password) {
        this.password = password;
    }

    public java.lang.String getUsername() {
        return username;
    }

    public void setUsername(java.lang.String username) {
        this.username = username;
    }

}

5.HibernateSessionFactory.java

package com.demo.hibernate.util;

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

/**
 * Configures and provides access to Hibernate sessions, tied to the
 * current thread of execution. Follows the Thread Local Session
 * pattern, see {@link http://hibernate.org/42.html}.
 */
public class HibernateSessionFactory {

    /** 
     * Location of hibernate.cfg.xml file.
     * NOTICE: Location should be on the classpath as Hibernate uses
     * #resourceAsStream style lookup for its configuration file. That
     * is place the config file in a Java package - the default location
     * is the default Java package.


     * Examples: 

     * CONFIG_FILE_LOCATION = "/hibernate.conf.xml". 
     * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml". 
     */
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

    /** Holds a single instance of Session */
    private static final ThreadLocal threadLocal = new ThreadLocal();

    /** The single instance of hibernate configuration */
    private static final Configuration cfg = new Configuration();

    /** The single instance of hibernate SessionFactory */
    private static org.hibernate.SessionFactory sessionFactory;

    /**
     * Returns the ThreadLocal Session instance. Lazy initialize
     * the SessionFactory if needed.
     *
     * @return Session
     * @throws HibernateException
     */
    public static Session currentSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

        if (session == null) {
            if (sessionFactory == null) {
                try {
                    cfg.configure(CONFIG_FILE_LOCATION);
                    sessionFactory = cfg.buildSessionFactory();
                }
                catch (Exception e) {
                    System.err.println("%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
                }
            }
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }

        return session;
    }

    /**
     * Close the single hibernate session instance.
     *
     * @throws HibernateException
     */
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);

        if (session != null) {
            session.close();
        }
    }

    /**
     * Default constructor.
     */
    private HibernateSessionFactory() {
    }

}

6.UserDAO.java

package com.demo.hibernate.dao;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.demo.hibernate.beans.User;
import com.demo.hibernate.util.HibernateSessionFactory;

public class UserDAO {

    public User getUser(String username) throws HibernateException {
        Session session = null;
        Transaction tx = null;
        User user = null;
        try {
            session = HibernateSessionFactory.currentSession();
            tx = session.beginTransaction();
            Query query = session.createQuery("from User where username=?");
            query.setString(0, username.trim());
            user = (User)query.uniqueResult();
            query = null;
            tx.commit ();
        }catch(HibernateException e){
            throw e;
        }finally{
            if (tx!=null) {
                tx.rollback();
            }
            HibernateSessionFactory.closeSession();
        }
        return user;
    }
}


7.UserService.java

package com.demo.hibernate.service;

import com.demo.hibernate.beans.User;
import com.demo.hibernate.dao.UserDAO;

public class UserService {
    
    public boolean valid(String username, String password) {
        UserDAO test = new UserDAO();
        User user = test.getUser("admin");
        if(user.getPassword().equals(password)) {
            return true;
        } else {
            return false;
        }
    }
    
    public static void main(String[] args) {
        UserService service = new UserService();
        boolean login = service.valid("admin", "admin");
        System.out.println("验证结果:"+login);
    }
}



© 著作权归作者所有

共有 人打赏支持
xiejunbo
粉丝 41
博文 149
码字总数 132149
作品 0
广州
后端工程师
Nhibernate入门与demo 升级版

在第一篇文章中有几个地方作为第一个Nhibernate入门demo还有很多不足!今天特意写点补充知识!请先阅读:Nhibernate入门与demo 以下是我们项目的升级的地方: 先看一下程序结构的截图: 问题...

aicoder
2010/09/18
0
0
hibernate和spring整合问题

整合hibernate和spring的时候,出现了下面的问题,找了好久都不知道哪里出了错,麻烦各位大神看看,小弟感激不尽! 严重: Exception sending context initialized event to listener instanc...

kevinxxw
2015/07/30
1K
1
关闭Hibernate中Connection如何自动关闭的问题

小弟最近在做一个小小的ORM产品,其中遇到这样一个问题,例如一个EntityManager对象的话(类似Hibernate的session),那么我用同一个对象做几次操作,而且每次都是查询操作的话,我想让他自动...

tianpeng91
2012/07/10
3.8K
2
08、手把手教Vue--来几个小Demo

PS:转载请注明出处 作者: TigerChain 地址https://www.jianshu.com/p/0b45ac7914b7 本文出自 TigerChain 简书 手把手教 Vue 系列 教程简介 1、阅读对象 本篇教程适合新手阅读,老手直接略过...

TigerChain
10/07
0
0
Hibernate 入门

一、Hibernate包。 1、目录结构。 documentation:存放Hibernate相关文档,包括参考文档和API文档。 lib:存放Hibernate编译和运行所依赖的JAR包。其中required子目录下包含了运行Hibernate...

JackMo2015
2016/12/27
3
0

没有更多内容

加载失败,请刷新页面

加载更多

20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
10分钟前
0
0
WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部