hibernate接口关系:
代码结构:
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