Hibernate之AbstractEntityPersister详解编程语言
2023-06-13 09:20:42 时间
Hibernate开发中需要根据持久层对象获取所映射的数据库表相关信息,如表名,主键,外键对象等相关系。
Hibernate配置 Hibernate.cfg.xml
?xml version=1.0 encoding=utf-8? !DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" hibernate-configuration session-factory !-- Database connection settings -- property name="connection.driver_class" com.mysql.jdbc.Driver /property property name="connection.url" jdbc:mysql://localhost:3306/ehome /property property name="connection.username" root /property property name="connection.password" mysql /property property name="dialect" org.hibernate.dialect.MySQLDialect /property property name="current_session_context_class" thread /property property name="show_sql" true /property mapping resource="org/bkgd/ehome/jeeplugin/userapp/domain/HhArticle.hbm.xml" / /session-factory /hibernate-configuration
HhArticle.hbm.xml 文件在此省略
编写HibernateUtil辅助类 获取sessionFactory
public class HibernateUtils { private static final SessionFactory sessionFactory;; //创建sessionFactory static { try { sessionFactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); public static SessionFactory getSessionFactory() { return sessionFactory; }
测试类
public class TestPersister { private static AbstractEntityPersister classMetadata; private Object obj; public TestPersister(SessionFactory sessionFatory, Object obj) { classMetadata = (AbstractEntityPersister) sessionFatory.getClassMetadata(obj.getClass()); this.obj = obj; /** * @param args public static void main(String[] args) { //实例化classMetadata 传入sessionFactory和obj对象 TestPersister tp = new TestPersister(HibernateUtils.getSessionFactory(),new HhArticle()); Session session = HibernateUtils.getSessionFactory().getCurrentSession(); session.beginTransaction(); SQLQuery sqlquery = session.createSQLQuery("DELETE FROM " + classMetadata.getTableName()); sqlquery.executeUpdate(); session.getTransaction().commit(); //事务提交 //classMetadata一些其他操作 System.out.println(classMetadata.getTableName()); //表名 System.out.println(classMetadata.getIdentifierPropertyName()); //主键列映射属性 System.out.println(classMetadata.getEntityName()); //对象名称 for(String str:classMetadata.getPropertyNames()){ //非主键属性 System.out.println(str); public AbstractEntityPersister getClassMetadata() { return classMetadata; public void setClassMetadata(AbstractEntityPersister classMetadata) { this.classMetadata = classMetadata; public Object getObj() { return obj; public void setObj(Object obj) { this.obj = obj; }
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/14392.html
cjavamysqlxml相关文章
- Hibernate学习笔记一 使用idea开发工具搭建框架详解编程语言
- Spring Hibernate 实现BaseDao详解编程语言
- HQL 自定义 Hibernate 的 HQL 函数详解编程语言
- hibernate与spring整合的配置文档问题详解编程语言
- 使用annotation配置hibernate映射关系详解编程语言
- Hibernate_day02讲义_使用Hibernate完成CRM客户管理中查询所有客户的操作详解编程语言
- 一级缓存二级缓存(hibernate)详解编程语言
- Hibernate的HQL简介详解编程语言
- hibernate的面试总结详解编程语言
- Hibernate通过SQL查询常量时只返回第一个字符解决方法详解编程语言
- org.hibernate.MappingException: No Dialect mapping for JDBC type: -4详解编程语言
- Hibernate之get()和load()详解编程语言
- Hibernate之缓存机制(一级缓存)详解编程语言
- Hibernate之lazy懒加载详解编程语言
- 如何使用hibernate存取clob和blob类型数据详解编程语言
- Hibernate各种主键生成策略与配置详解编程语言
- hibernate部分详解编程语言
- hibernate+oracle+主键varchar2类型,增加序列策略注解失败详解编程语言
- 基于不同版本Hibernate的OracleXmlType处理详解编程语言
- SpringMVC + Spring + Hibernate实战(通用配置)详解编程语言