/* * Hibernate, Relational Persistence for Idiomatic Java * * JBoss, Home of Professional Open Source * Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors * as indicated by the @authors tag. All rights reserved. * See the copyright.txt in the distribution for a * full listing of individual contributors. * * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU Lesser General Public License, v. 2.1. * This program is distributed in the hope that it will be useful, but WITHOUT A * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License, * v.2.1 along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package org.hibernate.brmeyer.demo; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.hibernate.Hibernate; import org.hibernate.brmeyer.demo.entity.Skill; import org.hibernate.brmeyer.demo.entity.Tool; import org.hibernate.brmeyer.demo.entity.User; /** * The Class BasicJpaDemo. * * @author Brett Meyer */ public class BasicJpaDemo { /** * The main method. * * @param args the arguments */ public static void main(String[] args) { try { Tool tool = new Tool(); // Note: id generated by Hibernate tool.setName( "Hammer" ); insertTool( tool ); List<Tool> tools = new ArrayList<Tool>(); tools.add( tool ); Skill skill = new Skill(); // Note: id generated by Hibernate skill.setName( "Hammering Things" ); insertSkill( skill ); List<Skill> skills = new ArrayList<Skill>(); skills.add( skill ); User user = new User(); // Note: id generated by Hibernate user.setName( "Brett Meyer" ); user.setEmail( "foo@foo.com" ); user.setPhone( "123-456-7890" ); user.setTools( tools ); user.setSkills( skills ); insertUser( user ); user = getUser(1); System.out.println( user.toString() ); } catch (Exception e) { e.printStackTrace(); } System.exit(0); } /** * Insert user. * * @param user the user * @throws Exception the exception */ private static void insertUser(User user) throws Exception { EntityManager entityManager = openEntityManager(); entityManager.getTransaction().begin(); entityManager.persist( user ); // cascades the tool & skill relationships entityManager.getTransaction().commit(); } /** * Insert tool. * * @param tool the tool * @throws SQLException the SQL exception */ private static void insertTool(Tool tool) throws SQLException { EntityManager entityManager = openEntityManager(); entityManager.getTransaction().begin(); entityManager.persist( tool ); entityManager.getTransaction().commit(); } /** * Insert skill. * * @param skill the skill * @throws SQLException the SQL exception */ private static void insertSkill(Skill skill) throws SQLException { EntityManager entityManager = openEntityManager(); entityManager.getTransaction().begin(); entityManager.persist( skill ); entityManager.getTransaction().commit(); } /** * Gets the user. * * @param id the id * @return the user * @throws SQLException the SQL exception */ private static User getUser(int id) throws SQLException { EntityManager entityManager = openEntityManager(); User user = entityManager.find( User.class, id ); // Query query = entityManager.createQuery( "SELECT u FROM User u WHERE u.id=:id" ); // query.setParameter( "id", id ); // User user = (User) query.getSingleResult(); // CriteriaBuilder builder = entityManager.getCriteriaBuilder(); // CriteriaQuery<User> criteria = builder.createQuery( User.class ); // Root<User> root = criteria.from( User.class ); // criteria.select( root ); // criteria.where( builder.equal( root.get( "id" ), id ) ); // User user = entityManager.createQuery( criteria ).getSingleResult(); Hibernate.initialize( user.getTools() ); Hibernate.initialize( user.getSkills() ); entityManager.close(); return user; } /** The entity manager factory. */ private static EntityManagerFactory entityManagerFactory = null; /** * Open entity manager. * * @return the entity manager */ private static EntityManager openEntityManager() { if (entityManagerFactory == null) { entityManagerFactory = Persistence.createEntityManagerFactory( "Demo" ); } return entityManagerFactory.createEntityManager(); } }