一步一步做项目(9)实体类测试

一步一步做项目(9)实体类测试

  • 实体类
  • Hibernate映射配置
  • Hibernate配置
  • 实体测试
  • 执行

在前面一步一步做项目(5)管理用户信息java类的实现中介绍了实体类的创建,那么,怎么进行测试呢?

实体类

首先,来看看,实体类:

package cn.lut.curiezhang.model;

/**
 * SSH框架进行用户管理的持久层的POJO类
 * @author curiezhang
 *
 */
public class Users {
	// 用户id
	private String userId;
	// 用户名
	private String userName;
	// 用户密码
	private String userPassword;
	// 用户联系电话
	private String userPhone;
	public Users() {
		super();
	}
	public Users(String userId, String userName, String userPassword) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.userPassword = userPassword;
	}
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	public String getUserPhone() {
		return userPhone;
	}
	public void setUserPhone(String userPhone) {
		this.userPhone = userPhone;
	}
}

这里,需要创建构造器方法,Users()和Users(String userId, String userName, String userPassword),为创建对象服务的。

Hibernate映射配置

需要设置映射配置文件Users.hbm.xml:



    
<hibernate-mapping>
  <class name="cn.lut.curiezhang.model.Users" table="USERS">
    <id name="userId">
			<column name="USER_ID" length="32">
				<comment>用户idcomment>
			column>
    	<generator class="assigned"/>
    id>
    <property name="userName">
			<column name="USER_NAME" not-null="true" length="50">
				<comment>用户名comment>
			column>
    property>
    <property name="userPassword">
			<column name="USER_PASSWORD" not-null="true" length="128">
				<comment>用户密码comment>
			column>
    property>
    <property name="userPhone">
			<column name="USER_PHONE" length="20">
				<comment>用户手机comment>
			column>
    property>
  class>
hibernate-mapping>

你也可以采用注解的方式来配置,这就需要在实体类中配置注解来进行映射。

Hibernate配置

需要进行Hibernate配置,配置hibernate.cfg.xml文件:





<hibernate-configuration>

  
    <session-factory>

        
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driverproperty>
        <property name="connection.url">jdbc:mysql://localhost:3306/cmis?serverTimezone=GMT%2B8&useSSL=falseproperty>
        <property name="connection.username">cmisproperty>
        <property name="connection.password">13993106255property>
				
				<property name="connection.autoReconnect">trueproperty>
				<property name="connection.autoReconnectForPools">trueproperty>
				<property name="connection.is-connection-validation-required">trueproperty>

        
        <property name="connection.pool_size">5property>
           
        <property name="jdbc.fetch_size">50 property>   
           
        <property name="jdbc.batch_size">23 property>  
        
        <property name="current_session_context_class">threadproperty>

        
        <property name="dialect">org.hibernate.dialect.MySQL8Dialectproperty>

        
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProviderproperty>

        
        <property name="show_sql">trueproperty>
        <property name="format_sql">trueproperty>

        
        <property name="hbm2ddl.auto">updateproperty>

        <mapping resource="cn/lut/curiezhang/model/Users.hbm.xml"/>

    session-factory>

hibernate-configuration>

这里,需要注意将添加到配置文件中,这就可以找到Hibernate映射配置文件,当然,你也可以采用注解的方式来配置。

实体测试

现在,已经完成了Hibernate运行环境的基本设置和准备工作,就可以进行测试了,使用Junit测试模块,在eclipse的Java Build Path中,添加库支持,如下图所示,选择对应的Junit库即可。
一步一步做项目(9)实体类测试_第1张图片
之后,创建测试类:

package cn.lut.curiezhang.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import cn.lut.curiezhang.model.Users;
import cn.lut.curiezhang.util.SecurityFunctions;
import junit.framework.TestCase;

/**
 * Illustrates use of Hibernate native APIs.
 *
 * @author Curie Zhang
 */
public class UserTest extends TestCase {
	private SessionFactory sessionFactory;

	@Override
	protected void setUp() throws Exception {
		// A SessionFactory is set up once for an application!
		final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
				.configure() // configures settings from hibernate.cfg.xml
				.build();
		try {
			sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
		}
		catch (Exception e) {
			// The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory
			// so destroy it manually.
			StandardServiceRegistryBuilder.destroy( registry );
		}
	}

	@Override
	protected void tearDown() throws Exception {
		if ( sessionFactory != null ) {
			sessionFactory.close();
		}
	}

	@SuppressWarnings("unchecked")
	public void testBasicUsage() {
		// create a couple of user...
		Session session = sessionFactory.openSession();
		session.beginTransaction();
		session.save( new Users( "77777", "77777", SecurityFunctions.sha3("111111", 512) ) );
		session.save( new Users( "88888", "88888", SecurityFunctions.sha3("111111", 512) ) );
		session.getTransaction().commit();
		session.close();

		// now lets pull users from the database and list them
		session = sessionFactory.openSession();
		session.beginTransaction();
		List<Users> result = session.createQuery( "from Users" ).list();
		for ( Users user : result ) {
			System.out.println( "User (" + user.getUserId() + ", " + user.getUserName() + ") : " + user.getUserPassword() );
		}
		session.getTransaction().commit();
		session.close();
	}
}

执行

运行测试前,要启动MySQL数据库,然后,执行JUnit Test,如下图所示:
一步一步做项目(9)实体类测试_第2张图片

之后,就可以在控制台上看到执行的结果,也可以在数据库中看到执行的结果。
控制台输出如下:
一步一步做项目(9)实体类测试_第3张图片在数据库中的输出如下:
一步一步做项目(9)实体类测试_第4张图片这里使用的数据库客户端是DataGrip。
其它的实体类,也可以通过这样的方法来进行测试,向数据库中添加数据,从数据库删除数据等。

你可能感兴趣的:(开发技术,Hibernate,实体类,JUnit)