#数据库为mysql 编译器为idea,操作环境linux mint!
数据库:
create database leehuan;
use leehuan //进入leehuan数据库中
创建表
CREATE TABLE USER (
USER_ID int(25),
NAME varchar(25),
PASSWORD varchar(25),
TYPE varchar(25),
PRIMARY KEY (USER_ID)
)
创建映射关系bean类
import java.io.Serializable;
/**
* Created by user on 16-12-19.
*/
public class User implements Serializable {
//每创建一个类似Bean的类,我们需要创建一个xml文件,而xml文件及映射设数据库中对应的每一个row
private int id;
private String name;
private String password;
private String type;
public User() {
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public String getType() {
return type;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setType(String type) {
this.type = type;
}
}
创建映射关系的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" >
<hibernate-mapping>
<class name="User" table="USER">
<!--此id用来做标识-->
<id name="id" type="java.lang.Integer" column="USER_ID">
<generator class="increment"/>
</id>
<property name="name" type="java.lang.String" column="NAME" length="25"/>
<property name="password" type="java.lang.String" column="PASSWORD" length="25"/>
<property name="type" type="java.lang.String" column="TYPE" length="25"/>
</class>
</hibernate-mapping>
创建主类(一般选择idea hibernate会自动创建)
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Query;
import org.hibernate.cfg.Configuration;
import org.hibernate.metadata.ClassMetadata;
import java.util.Map;
/**
* Created by user on 16-12-19.
*/
public class Main {
private static final SessionFactory ourSessionFactory;
static {
try {
ourSessionFactory = new Configuration().
configure("hibernate.cfg.xml").
buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return ourSessionFactory.openSession();
}
public static void main(final String[] args) throws Exception {
final Session session = getSession();
try {
System.out.println("querying all the managed entities...");
final Map metadataMap = session.getSessionFactory().getAllClassMetadata();
for (Object key : metadataMap.keySet()) {
final ClassMetadata classMetadata = (ClassMetadata) metadataMap.get(key);
final String entityName = classMetadata.getEntityName();
final Query query = session.createQuery("from " + entityName);
System.out.println("executing: " + query.getQueryString());
for (Object o : query.list()) {
System.out.println(" " + o);
}
}
} finally {
session.close();
}
}
}
配置hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--配置数据库JDBS的驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/leehuan</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">lihuan</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping resource="User-hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
创建UserDao以及UserDaoimp
/**
* Created by user on 16-12-19.
*/
public interface UserDao {
void delete(User user);
void update(User user);
User findByid(int id); //根据用户标识查找用户
void save(User user); //添加用户
}
--------------------------------------------------------
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
* Created by user on 16-12-20.
*/
public class UserDaoImpl implements UserDao {
@Override
public void delete(User user) {
Session session = Main.getSession();
Transaction transaction = session.beginTransaction();
try {
session.delete(user);
transaction.commit();
}catch (Exception ex){
ex.printStackTrace();
transaction.rollback();
}finally {
HibernateUtil.closeSession();
}
}
@Override
public void update(User user) {
Session session = Main.getSession();
Transaction transaction = session.beginTransaction();
try {
session.update(user);
transaction.commit();
}catch (Exception ex){
ex.printStackTrace();
transaction.rollback();
}finally {
HibernateUtil.closeSession();
}
}
@Override
public User findByid(int id) {
User user = null;
Session session = Main.getSession();
Transaction transaction = session.beginTransaction();
try {
user = (User)session.get(User.class,id);
transaction.commit();
}catch (Exception ex){
ex.printStackTrace();
transaction.rollback();
}finally {
HibernateUtil.closeSession();
}
return user;
}
@Override
public void save(User user) {
Session session = Main.getSession();
Transaction transaction = session.beginTransaction();
try{
//保存user
session.save(user);
//提交
transaction.commit();
}catch (Exception ex){
ex.printStackTrace();
transaction.rollback();
}finally {
//最后清除close
HibernateUtil.closeSession();
}
}
}
创建获取UserDao获取实例的DaoFactory
/**
* Created by user on 16-12-20.
*/
public class DaoFactory {
public static UserDao getUserDaoinstan(){
return new UserDaoImpl();
}
}
最后进行单元测试:我选择的为Junit4的Testing library测试,需要导入Junit-4.8.2.jar和hamcrest-core-1.3.jar的包
import org.junit.Before;
import org.junit.Test;
/**
* Created by user on 16-12-20.
*/
public class UserDaoImplTest {
@Before
public void setUp() throws Exception {
}
@Test
public void save(){
UserDao userDao = DaoFactory.getUserDaoinstan();
try {
User user = new User();
user.setId(6);
user.setName("JACK");
user.setPassword("123");
user.setType(null);
userDao.save(user);
}catch (Exception e){
e.printStackTrace();
}
}
}