El Blog de Ana Buigues » JPA http://anabuigues.com Wed, 07 Dec 2011 16:07:47 +0000 es-ES hourly 1 http://wordpress.org/?v=3.4 Cómo configurar Hibernate sin ningún xml http://anabuigues.com/2011/02/07/como-configurar-hibernate-sin-ningun-xml/ http://anabuigues.com/2011/02/07/como-configurar-hibernate-sin-ningun-xml/#comments Mon, 07 Feb 2011 17:56:12 +0000 Ana Buigues http://anabuigues.com/?p=3359 Realizar la configuración de Hibernate con ficheros xml puede llegar a ser bastante engorroso, especialmente en aplicaciones muy grandes. Afortunadamente podemos inicializar la unidad de persistencia de forma programática y realizar los mapeos de las entidades mediante anotaciones, de esta forma conseguimos no tener que utilizar ningún fichero xml para la configuración.

A continuación un ejemplo de cómo hacerlo.

Creación de la unidad de persistencia:

public class PersistenceUnitStarter {
	//Añadimos las propiedades que queramos a la unidad de persistencia
	private static Properties getProperties() {
		Properties properties = new Properties();
		properties.setProperty(Environment.DRIVER, "org.h2.Driver");
		properties.setProperty(Environment.URL,
				"jdbc:h2:db;LOG=0;CACHE_SIZE=65536;LOCK_MODE=0;UNDO_LOG=0");
		properties.setProperty(Environment.USER, "");
		properties.setProperty(Environment.PASS, "");
		properties.put(Environment.SHOW_SQL, "true");
		properties.put(Environment.FORMAT_SQL, "true");
		properties.put(Environment.FLUSH_BEFORE_COMPLETION, "false");
		properties.put(Environment.TRANSACTION_STRATEGY,
				PersistenceUnitTransactionType.RESOURCE_LOCAL);
		properties.put(Environment.HBM2DDL_AUTO, "create");
		return properties;
	}
        //Le pasamos una lista con las clases que queremos añadir a la entidad de persistencia
        //Las clases tienen que estar definidas con anotaciones
	public static EntityManagerFactory createPersistenceUnit(List<Class> entities) {
		Ejb3Configuration conf = new Ejb3Configuration();
		conf.addProperties(getProperties());
		//añadimos los entities declarados con anotaciones
		for (Class clazz : entities) {
			conf.addAnnotatedClass(clazz);
		}
		return conf.buildEntityManagerFactory();
	}
}

Creamos las entidades mediante anotaciones

@Entity
public class Persona {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
	@Column(nullable = false)
	private String nombre;
	@Column(nullable = false)
	private String apellido;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
}
]]>
http://anabuigues.com/2011/02/07/como-configurar-hibernate-sin-ningun-xml/feed/ 3