hive版本:2.3.9, 定义一个meta store listener jar包, 用来检测ddl数据的变化,随后持久化到db里, 为什么用hibernate4, 本来用5的,但是5需要jboss 3.3 以上才能工作,但是hive2.3.9中已经有3.13了,上线后无法正常工作, 所以只能用4了.
关于hibernate中的connection和session的关系,看别人的回答:
https://www.cnblogs.com/hadoop-dev/p/8276601.html
关于c3p0的小坑, 参考:
https://www.jianshu.com/p/490a956f7624
hibernate.c3p0.idle_test_period
: 每过多久检测一下,连接是否alive, 不是的话, 丢掉这个connection.
hibernate.c3p0.testConnectionOnCheckout
: 每次从池子中取出连接,使用前检测一下是否可用.
hibernate在使用默认的日志级别的时候,会在每条sql后发送一条show warnings
, 有的db会限制一个事务的sql语句条数, 当超出后会:
SQL Error: 1105, SQLState: HY000
statement count 5001 exceeds the transaction limitation, autocommit = false
而且还会降低一些性能, 所以参考https://stackoverflow.com/questions/30926597/why-is-show-warnings-query-issued-here-jpa-hibernate-mysql的意见:
添加了Log4j2.xml , 提高了日志级别, 从而去掉show warnings的sql.
<Configuration status="INFO">
<Loggers>
<!-- this is for disable sql: show warning; to db-->
<logger name="org.hibernate" level="info"/>
<logger name="org.hibernate.engine.jdbc.spi" level="error"/>
<logger name="org.hibernate.engine.internal" level="error"/>
</Loggers>
</Configuration>