构建HibernateUtil测试Entity层代码

网站后端一般从下往上有Entity层(对应DB table) —> Dao层(对应DB table增删改查各种操作)—> Service层(业务逻辑层,调用dao层和DB打交道) —> Controller层(对应各种http api,调用service)。

前后端分离开发的话,后端必须做到充分的自测,才能保证前后端联调时不出大问题。如果Dao层使用JPA的话,其实不需要测试,除非用错了。那么,针对entity层和service/controller层,后端开发时怎么自测一直是个问题萦绕在我心头。

目前这个问题的一半找到了答案,可以使用Hibernate Session对entity类进行测试。如果entity类的字段定义或者注解不合理的话,增删改查操作会报错,那么上层的service/controller也就会出错。所以entity层的测试其实十分必要。在测试过程中,将hibernate配置成打印sql语句,并且在实际unit test的catch子句里打印stack trace十分实用,能快速定位问题。

步骤总结如下,供日后参考:

  1. 首先在src/main/resource下增加配置文件hibernate.cfg.xml,配置数据库driver,dialect,数据库连接url,用户名,密码等等,记得把需要测试的entity类配置到mapping节点里,class=“完整包名.entity类名”

有时候为了省事儿,也可以不配置这个文件,直接在HibernaterUtil类里,创建SessionFactory实例时把各项配置塞进去。下一步代码里会有示例。

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hiber
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Struts2+Hibernate登录界面的代码示例。 1. 登录页面(login.jsp) ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Login Page</title> </head> <body> <h2>Login</h2> <form action="login" method="post"> <table> <tr> <td>Username:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="password"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login"/></td> </tr> </table> </form> </body> </html> ``` 2. Struts2 Action类(LoginAction.java) ``` package com.example.action; import com.example.dao.UserDao; import com.example.entity.User; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String username; private String password; public String execute() { UserDao userDao = new UserDao(); User user = userDao.findUserByUsername(username); if (user != null && user.getPassword().equals(password)) { return SUCCESS; } else { addActionError("Invalid username or password"); return INPUT; } } // getters and setters } ``` 3. Hibernate实体类(User.java) ``` package com.example.entity; import javax.persistence.*; @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "password") private String password; // getters and setters } ``` 4. Hibernate DAO类(UserDao.java) ``` package com.example.dao; import com.example.entity.User; import com.example.util.HibernateUtil; import org.hibernate.Session; import org.hibernate.Transaction; public class UserDao { public User findUserByUsername(String username) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = null; User user = null; try { tx = session.beginTransaction(); user = (User) session.createQuery("FROM User WHERE username = :username") .setParameter("username", username) .uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { tx.rollback(); } } finally { session.close(); } return user; } } ``` 以上是一个简单的Struts2+Hibernate登录界面的代码示例,希望能对您有所帮助。如果有任何问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值