文档章节

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
粉丝 43
博文 149
码字总数 132149
作品 0
广州
后端工程师
私信 提问
Nhibernate入门与demo 升级版

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

aicoder
2010/09/18
0
0
关闭Hibernate中Connection如何自动关闭的问题

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

tianpeng91
2012/07/10
4K
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
bboss/bboss-plugins

bboss 插件工程 bboss-plugins project.包含word转pdf、pdf转swf项目,持久层hibernate插件 bboss hibernate插件工程 hihernate插件包含以下两个功能: 1.通过bboss初始化hibernate并加载hib...

bboss
2017/03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多线程的实现方式

多线程是指 一个程序运行时,产生或使用了不止一个线程。 线程的生命周期是怎么样的,下面这张图我们可以看出些端倪: 这章我们主要讨论多线程实现的方式,基础知识部分我们可以下来再恶补。...

搬砖大侠
9分钟前
0
0
新人千万不要在 Windows 上使用 Ruby on Rails

标题:新人千万不要在 Windows 上使用 Ruby on Rails 副标题:鼓励新人在 Linux 和 Mac 上使用 Ruby on Rails ! 原则:要走寻常路,不要学美特斯邦伟! "在 Windows上 使用 Ruby on Rails "是...

Jason909
17分钟前
0
0
day177-2018-12-14-英语流利阅读-待学习

艾滋病的治愈方法是否触手可及? Daniel 2018-12-14 1.今日导读 几十年来,艾滋病一直是世界上最难对付的“超级绝症”之一,从人类历史上第一次诊断出艾滋病病例的 20 世纪 80 年代早期到 20...

飞鱼说编程
43分钟前
7
0
java 合成两张图片或图片与二维码

java中偶尔会出现需要将一张小图片嵌入大图中或带二维码的海报图片,那么本文就是奔着这个目的来的,直接上腊肉! zxing是生成1D和2D条形或二维码的工具类库,java图形库Graphics2D进行图片的...

貔貅叔
47分钟前
4
0
80后阿里P10,“关老板”如何带着MaxCompute一路升级?

我是个幸运的人。虽然幸运不能被复制,但是眼光和努力可以。 关涛/关老板,80后的阿里P10,阿里巴巴通用计算平台负责人,阿里巴巴计算平台研究员。12年职场人生,微软和阿里的选择。 关涛的花...

阿里云官方博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部