初识hibernate

hibernate接口关系:

初识hibernate_第1张图片


代码结构:

初识hibernate_第2张图片

hibernate.cfg.xml代码:
<!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="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
		<property name="connection.username">root</property>
		<property name="connection.password">admin</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="format_sql">true</property>
		<property name="show_sql">true</property>
		<mapping resource="com/hibernate/beans/User.hbm.xml" />
	</session-factory>
</hibernate-configuration>

HibernateSessionFactory.java代码:
package com.hibernate.util;

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

public class HibernateSessionFactory {

	private static String CONFIG_FILE_LOCATION="/hibernate.cfg.xml";
	
	private static final ThreadLocal threadLocal = new ThreadLocal();
	
	private static final Configuration cfg = new Configuration();
	
	private static SessionFactory sessionFactory;
	
	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){
					e.printStackTrace();
				}
			}
			session = sessionFactory.openSession();
			threadLocal.set(session);
		}
		return session;
	}
	
	public static void closeSession() throws HibernateException{
		Session session = (Session)threadLocal.get();
		threadLocal.set(null);
		if(session!=null){
			session.close();
		}
	}
	
}



User.java代码:
package com.hibernate.beans;

public class User {
	
	private int id;

	private String username;

	private String password;

	private String email;
	
	public User(){
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

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

	public String getPassword() {
		return password;
	}

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

	public String getEmail() {
		return email;
	}

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

}


User.hbm.xml代码:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.hibernate.beans.User" table="t_user">
    <id name="id" column="id" type="integer">
       <generator class="increment"/>
    </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>


UserDAO.java代码:
package com.hibernate.dao;

import java.util.List;

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

import com.hibernate.beans.User;
import com.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){
			e.printStackTrace();
		}finally{
			if(tx!=null){
				//tx.rollback();
			}
			HibernateSessionFactory.closeSession();
		}
		return user;
	}
	
	public void saveUser(User user) throws HibernateException{
		Session session = null;
		Transaction tx = null;
		try{
			session = HibernateSessionFactory.currentSession();
			tx = session.beginTransaction();
			session.save(user);
			tx.commit();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(tx!=null){
				//tx.rollback();
			}
			HibernateSessionFactory.closeSession();
		}
	}
	
	public List<User> getUsers(){
		Session session = null;
		Transaction tx = null;
		List users = null;
		try{
			session = HibernateSessionFactory.currentSession();
			tx = session.beginTransaction();
			Criteria criteria = session.createCriteria(User.class);
			criteria.setMaxResults(50);
			users = criteria.list();
			tx.commit();
		}catch(HibernateException e){
			e.printStackTrace();
		}finally{
			HibernateSessionFactory.closeSession();
		}
		return users;
	}
}



UserService.java代码:
package com.hibernate.service;

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

public class UserService {
	
	public boolean valid(String username,String password){
		UserDAO userDao = new UserDAO();
		User user = userDao.getUser(username);
		if(user.getPassword().equals(password)){
			return true;
		}else{
			return false;
		}
	}
	
	public void saveUser(User user){
		UserDAO userDao = new  UserDAO();
		userDao.saveUser(user);
	}
	
	public int  getUserCount(){
		UserDAO userDao = new UserDAO();
		return userDao.getUsers().size();
	}
	
	public static void main(String[] args) {
		UserService userService = new UserService();
		User user = new User();
		user.setUsername("yangjianzhou");
		user.setPassword("123456");
		user.setEmail("[email protected]");
		userService.saveUser(user);
		boolean bool = userService.valid("yangjianzhou", "123456");
		System.out.println("验证结果:"+bool);
		int count = userService.getUserCount();
		System.out.println("用户数为:"+count);
	}

}


运行结果:
Hibernate: 
    select
        max(id) 
    from
        t_user
Hibernate: 
    insert 
    into
        t_user
        (username, password, email, id) 
    values
        (?, ?, ?, ?)
Hibernate: 
    select
        user0_.id as id0_,
        user0_.username as username0_,
        user0_.password as password0_,
        user0_.email as email0_ 
    from
        t_user user0_ 
    where
        user0_.username=?
验证结果:true
Hibernate: 
    select
        this_.id as id0_0_,
        this_.username as username0_0_,
        this_.password as password0_0_,
        this_.email as email0_0_ 
    from
        t_user this_ limit ?
用户数为:1

你可能感兴趣的:(Hibernate)