Here's the list of logger categories:
Formatted for pasting into a log4j XML configuration file:
NB: Most of the loggers use the DEBUG level, however org.hibernate.type uses TRACE. In previous versions of Hibernate org.hibernate.type also used DEBUG, but as of Hibernate 3 you must set the level to TRACE (or ALL) in order to see the JDBC parameter binding logging.
And a category is specified as such:
It must be placed before the root element.
|
Rants and ravings of a semi-autistic developer who has a hard time remembering idiotic nonsense details. Why remember it, when you know where to find it.
Monday, September 19, 2016
Hibernate : log4j.xml logging category and binding parameters
Monday, September 5, 2016
Hibernate 4 - publish changes / updates to the schema with entities in Spring JavaConfig
package com.mycompany.domain.test;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.hibernate.MappingException;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
import org.hibernate.cfg.Configuration;
import org.hibernate.metamodel.MetadataSources;
import org.hibernate.metamodel.source.MetadataImplementor;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
public class JpaSchemaExport {
private static final Logger LOGGER = Logger.getLogger(JpaSchemaExport.class);
public static void main(String[] args) throws MappingException, IOException, ClassNotFoundException {
BasicConfigurator.configure();
Configuration c = new Configuration();
Class[] clzzs = getClasses("com.mycompany.domain.entity");
for (int i = 0; i < clzzs.length; i++) {
c.addAnnotatedClass(clzzs[i]);
}
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.connection.driver_class","oracle.jdbc.OracleDriver");
hibernateProperties.put("hibernate.connection.url","jdbc:oracle:thin:@");
hibernateProperties.put("hibernate.connection.username","scott");
hibernateProperties.put("hibernate.connection.password","secret99");
hibernateProperties.put("hibernate.show_sql", true);
hibernateProperties.put("hibernate.dialect","org.hibernate.dialect.Oracle10gDialect");
hibernateProperties.put("hibernate.format_sql", true);
hibernateProperties.put("connection.pool_size", 3);
hibernateProperties.put("current_session_context_class", "thread");
hibernateProperties.put("hibernate.hbm2ddl.auto", "update");
c.addProperties(hibernateProperties);
StandardServiceRegistryBuilder registry = new StandardServiceRegistryBuilder();
registry.applySettings(c.getProperties());
ServiceRegistry serviceRegistry = registry.build();
MetadataImplementor metadata = (MetadataImplementor) new MetadataSources(serviceRegistry).buildMetadata();
SchemaUpdate schemaExport = new SchemaUpdate(serviceRegistry, c);
// use this line when exporting the whole DDL
//SchemaExport schemaExport = new SchemaExport(serviceRegistry,c);
File f = new File("export.sql");
schemaExport.setOutputFile(f.getAbsolutePath());
System.err.println(f.getAbsolutePath());
schemaExport.execute(true, false);
if (schemaExport.getExceptions().size() > 0) {
Iterator iterator = schemaExport.getExceptions().iterator();
int cnt = 1;
LOGGER.warn(schemaExport.getExceptions().size() + " errors occurred while performing .");
while (iterator.hasNext()) {
LOGGER.error("Error #" + cnt + ": " + iterator.next().toString());
}
}
( (StandardServiceRegistryImpl) serviceRegistry ).destroy();
}
/**
* Scans all classes accessible from the context class loader which belong to the given package and subpackages.
*
* @param packageName The base package
* @return The classes
* @throws ClassNotFoundException
* @throws IOException
*/
private static Class[] getClasses(String packageName)
throws ClassNotFoundException, IOException {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
assert classLoader != null;
String path = packageName.replace('.', '/');
Enumeration resources = classLoader.getResources(path);
List dirs = new ArrayList();
while (resources.hasMoreElements()) {
URL resource = resources.nextElement();
dirs.add(new File(resource.getFile()));
}
ArrayList classes = new ArrayList();
for (File directory : dirs) {
classes.addAll(findClasses(directory, packageName));
}
return classes.toArray(new Class[classes.size()]);
}
/**
* Recursive method used to find all classes in a given directory and subdirs.
*
* @param directory The base directory
* @param packageName The package name for classes found inside the base directory
* @return The classes
* @throws ClassNotFoundException
*/
private static List findClasses(File directory, String packageName) throws ClassNotFoundException {
List classes = new ArrayList();
if (!directory.exists()) {
return classes;
}
File[] files = directory.listFiles();
for (File file : files) {
if (file.isDirectory()) {
assert !file.getName().contains(".");
classes.addAll(findClasses(file, packageName + "." + file.getName()));
} else if (file.getName().endsWith(".class")) {
classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6)));
}
}
return classes;
}
}
Subscribe to:
Comments (Atom)