回滚无法使用hibernate

Fed*_*rik 5 hibernate logback c3p0 hibernate-annotations

我正在尝试使用hibernate的logback,看起来很简单,但我无法让它工作

的hibernate.cfg.xml

    <!-- DB Properties -->
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
    <property name="hibernate.current_session_context_class">thread</property>

    <!-- DB Connection -->
     <property name="hibernate.connection.url"> XXXXXXXXXXXXX</property>
    <property name="connection.username">XXXXXXXXXX</property>
    <property name="connection.password">XXXXXXXXXX</property>


    <!-- c3p0 config  -->

    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>     
    <property name="hibernate.c3p0.acquire_increment">1</property>
    <property name="hibernate.c3p0.idle_test_period">100</property>
    <property name="hibernate.c3p0.min_size">10</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.timeout">1800</property>


</session-factory>
Run Code Online (Sandbox Code Playgroud)

logback.xml

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
        </Pattern>
    </encoder>
</appender>

<appender name="FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>c:/timesheet.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
            %msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <FileNamePattern>c:/timesheet.%i.log.zip</FileNamePattern>
        <MinIndex>1</MinIndex>
        <MaxIndex>10</MaxIndex>
    </rollingPolicy>

    <triggeringPolicy
        class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>2MB</MaxFileSize>
    </triggeringPolicy>

</appender>
<logger name="org.hibernate" level="ALL"/>
<root level="INFO">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
</root>
Run Code Online (Sandbox Code Playgroud)

控制台输出

休眠:选择this_.id_utente为id1_2_3_,this_.valido为valido2_3_,aziendagru2_.id_azienda_gruppo为id1_0_0_,aziendagru2_.logo为logo0_0_,aziendagru2_.nome_azienda为nome3_0_0_,aziendagru2_.sottotitolo_due为sottotit4_0_0_,aziendagru2_.sottotitolo_uno为sottotit5_0_0_,livello3_.id_livello为id1_3_1_ ,livello3_.descrizione如descrizi2_3_1_,utentianag4_.id_utente_anagrafica如id1_1_2_,utentianag4_.cognome如cognome1_2_,utentianag4_.nome从ts_utenti nome1_2_ THIS_左外连接上this_.id_azienda_gruppo = ts_aziende_gruppo aziendagru2_ aziendagru2_.id_azienda_gruppo左外连接上this_.id_livello ts_livelli livello3_ = livello3_.id_livello left this join ts_utenti_anagrafica utentianag4_ on this_.id_utente_anagrafica = utentianag4_.id_utente_anagrafica where this_.username =?和this_.password =?

Bor*_*der 1

您看到的控制台输出是因为您的休眠配置中有以下内容:

<property name="hibernate.show_sql">true</property>
Run Code Online (Sandbox Code Playgroud)

这告诉 hibernate 将 sql 准备好的语句记录到控制台。

很难从你的问题中判断 logback 日志记录是否工作正常,否则,但如果不是,这里有一个非常好的(如果有点过时;只需更新版本号)教程来启动和运行它。

编辑

如果上述教程不起作用,那么您可能正在使用 Hibernate 4 版本。

在 hibernate 的更高版本中,日志记录框架从 slf4j 切换到 JBoss 日志记录。这意味着 slf4j 不再是 Hibernate 依赖项。

您需要将最新的 slf4j JAR 添加到类路径中。