目录:
1、Hibernate 整合 log4j
hibernate使用了 slf4j,现在我们想使用 log4j,需要中间 jar 包 slf4j-log4j12-1.7.2.jar
导入 jar 包:slf4j-log4j12-1.7.2.jar 和 log4j-1.2.16.jar
在 src 下面配置 log4j.properties(从hibernate 下载包 /project/etc 下面复制)
### 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=%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=d:/hibernate.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=DEBUG, stdout, file #log4j.rootLogger=DEBUG, Console # ##Console #log4j.appender.Console=org.apache.log4j.ConsoleAppender #log4j.appender.Console.layout=org.apache.log4j.PatternLayout #log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n # #log4j.logger.java.sql.ResultSet=INFO #log4j.logger.org.apache=INFO #log4j.logger.java.sql.Connection=DEBUG #log4j.logger.java.sql.Statement=DEBUG #log4j.logger.java.sql.PreparedStatement=DEBUG
配置文件详解:
- 在控制台打印
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out(使用System.err控制台输出红色字体内容)
- 输出文件d:hibernate.log
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:hibernate.log
- log4j.rootLogger=error, stdout, file:表示输入项目中所有error,向控制台和文件总输出
** log4j.rootLogger=error, stdout:表示只向控制台输出
** log4j.rootLogger=info, stdout:表示向控制台输出info
** 日志级别 : fatal 致命错误 error 错误 warn 警告 info 信息 debug 调试信息 trace 堆栈信息 (由高到底顺序)
2、在hibernate中如何表达一对一关系
一对一关系不多见,一般可以合成一张表
2.1、第一种表达方法:使用外键
在两表任选一表 t_address,添加外键引用,在配置外键时
<many-to-one name="company" class="Company" column="cid" unique="true"/>
unique="true" 规定,外键唯一,使得"多对一"关系变成"一对一"关系
另外一张表 t_company,配置
<one-to-one name="address" class="Address" property-ref="company"/>
property-ref="" 指定 company 在一对一关联时,指向那个属性
2.2、主键同步
表 t_address 的 id 既做主键,又做外键
<id name="id" column="id"> <generator class="foreign"> <param name="property">company</param> 作为外键时,引用哪个属性 </generator> </id> <one-to-one name="company" class="Company" constrained="true"/>
表t_company
<one-to-one name="address" class="Address"/>
3、二级缓存
---