Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.j256.ormlite.examples.foreign;
  
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertNull;
  import static org.junit.Assert.assertTrue;
  
  import java.util.List;
  
Main sample routine to show how to do basic operations with the package.

NOTE: We use asserts in a couple of places to verify the results but if this were actual production code, we would have proper error handling.

 
 public class Main {
 
 	// we are using the in-memory H2 database
 	private final static String DATABASE_URL = "jdbc:h2:mem:account";
 
 	private Dao<AccountIntegeraccountDao;
 	private Dao<OrderIntegerorderDao;
 
 	public static void main(String[] argsthrows Exception {
 		// turn our static method into an instance of Main
 		new Main().doMain(args);
 	}
 
 	private void doMain(String[] argsthrows Exception {
 		JdbcConnectionSource connectionSource = null;
 		try {
 			// create our data source
 			connectionSource = new JdbcConnectionSource();
 			// setup our database and DAOs
 			setupDatabase(connectionSource);
 			// read and write some data
 			..println("\n\nIt seems to have worked\n\n");
 		} finally {
 			// destroy the data source which should close underlying connections
 			if (connectionSource != null) {
 				connectionSource.close();
 			}
 		}
 	}

Setup our database and DAOs
 
 	private void setupDatabase(ConnectionSource connectionSourcethrows Exception {
 
 		 = DaoManager.createDao(connectionSourceAccount.class);
 		 = DaoManager.createDao(connectionSourceOrder.class);
 
 		// if you need to create the table
 		TableUtils.createTable(connectionSourceAccount.class);
 		TableUtils.createTable(connectionSourceOrder.class);
 	}
 
 	private void readWriteData() throws Exception {
 		// create an instance of Account
 		String name = "Buzz Lightyear";
 		Account account = new Account(name);
 
 		// persist the account object to the database
 		.create(account);
 
 		// create an associated Order for the Account
 		// Buzz bought 2 of item #21312 for a price of $12.32
 		int quantity1 = 2;
 		int itemNumber1 = 21312;
 		float price1 = 12.32F;
 		Order order1 = new Order(accountitemNumber1price1quantity1);
 		.create(order1);
 
 		// create another Order for the Account
 		// Buzz also bought 1 of item #785 for a price of $7.98
 		int quantity2 = 1;
 		int itemNumber2 = 785;
 		float price2 = 7.98F;
 		Order order2 = new Order(accountitemNumber2price2quantity2);
 		.create(order2);
 
 		// construct a query using the QueryBuilder
 		QueryBuilder<OrderIntegerstatementBuilder = .queryBuilder();
 		// should find both of the orders that match the account
 		// ORMLite extracts the id from the account for the query automagically
 		statementBuilder.where().eq(.account);
 		List<Orderorders = .query(statementBuilder.prepare());
 
 		// sanity checks
		assertEquals("Should have found both of the orders for the account", 2, orders.size());
		assertTrue(.objectsEqual(order1orders.get(0)));
		assertTrue(.objectsEqual(order2orders.get(1)));
		/*
		 * Notice that in each of the orders that we got from the query, the Account id is good but the name field is
		 * null. With foreign object fields, only the id field is stored in the table for the order.
		 */
		assertEquals(account.getId(), orders.get(0).getAccount().getId());
		assertEquals(account.getId(), orders.get(1).getAccount().getId());
		/*
		 * To get the name field from the order's account field, we need to refresh each of the objects in the list
		 * which will lookup the id and load in all of the fields.
		 */
		// now the account name field has been filled in
		assertEquals(account.getName(), orders.get(0).getAccount().getName());
		assertEquals(account.getName(), orders.get(1).getAccount().getName());
	}
New to GrepCode? Check out our FAQ X