Hibernate的简单例子
1.首先我用到的是HSQLDB,纯Java的轻量级数据库。需要HSQLDB的jar包。
2.采用SLF4J+LOG4J的日志系统,需要的包是slf4j-api-1.6.1.jar,log4j-1.2.16,slf4j-log4j12-1.6.1。
第一步:建表SQL:
第四步:Hibernate配置文件hibernate.cfg.xml
第四步:Log4j配置文件log4g.properies
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 中间有数字则确定字符数前补空格,以下同样适用
#输出级别FATAL 0,ERROR 3,WARN 4,INFO 6,DEBUG 7
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名.{}中数字为类目反向深度
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式
#%l 输出日志事件的发生位置,包括类目名,发生的线程,以及在代码中的行数.%L只输出行数
### log4j提供4种布局 ###
#org.apache.log4j.HTMLLayout 以HTML表格形式布局
#org.apache.log4j.PatternLayout 可以灵活地指定布局模式
#org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
#org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[stefanie][%d{yyyy-MM-dd HH:mm:ss}][%p] %c{1}:%L - %m%n
#log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
#日志输出级别
log4j.rootLogger=info, stdout
###################
#hibernate相关配置 #
###################
### 输出hibernate调试过程中的错误日志
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
log4j.logger.org.hibernate=error
### log HQL query parser activity
### 输出HQL查询调试日志
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
### 输出SQL语句调试日志
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
### 输出缓存日志
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
### 输出事务日志
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
### 输出获取JDBC资源日志
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
配置文件是Hibernate包里面配置模板,一些解释来自于网上,我自己整理了一下。
写了一个测试类package com.stefanie;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.stefanie.dao.entity.User;public class HibernateTest {private static final Logger logger = LoggerFactory.getLogger(HibernateTest.class);public static void main(String[] args) {try {Configuration cfg = new Configuration().configure();SessionFactory sf = cfg.buildSessionFactory();Session session = sf.openSession();session.beginTransaction();User user = new User();user.setLoginName("Hebe");user.setPassword("2222");session.save(user);session.getTransaction().commit();session.close();sf.close();logger.info("成功insert"+user);}catch (HibernateException e) {logger.info("失败", e);}}}
报错:
java.lang.ClassNotFoundException:javax.persistence.EntityListeners
原因是缺少hibernate-jpa-2.0-api-1.0.0.Final.jar包。
我是初学者,希望大家给点意见和建议,谢谢!
我的异常网推荐解决方案:java.lang.ClassNotFoundException: javax.persistence.EntityListeners,http://www.myexception.cn/j2ee/182645.html