package org.easyframe.tutorial.lesson1;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import org.easyframe.enterprise.spring.CommonDao;
import org.easyframe.enterprise.spring.CommonDaoImpl;
import org.easyframe.enterprise.spring.SessionFactoryBean;
import org.easyframe.tutorial.lesson1.entity.Foo;
import org.junit.Assert;
import org.junit.Test;
public class Case1 {
/**
* At the very begining. 在最初的开始——
*
* 我们现在创建一个名为Foo的实体 {@link Foo}。然后用API为这个实体建表、并实现增删改查操作。
* 大家平时操作ORM框架都是使用了一个Dao对象的,因此这里也使用了一个通用的DAO对象。
*/
@Test
public void simpleTest() throws SQLException {
// 模拟Spring的初始化
SessionFactoryBean sessionFactory = new SessionFactoryBean();
sessionFactory.setDataSource("jdbc:derby:./db;create=true", null, null);
sessionFactory.afterPropertiesSet();
CommonDao dao = new CommonDaoImpl(sessionFactory.getObject());
// 创建表
dao.getNoTransactionSession().dropTable(Foo.class);
dao.getNoTransactionSession().createTable(Foo.class);
// 增加记录
Foo foo = new Foo();
foo.setId(1);
foo.setName("Hello,World!");
foo.setCreated(new Date());
dao.insert(foo); // 插入一条记录
// 从数据库查询这条记录
Foo loaded = dao.loadByField(Foo.class, "id", foo.getId(), true);
System.out.println(loaded.getName());
// 更新这条记录
loaded.setName("EF-ORM is very simple.");
dao.update(loaded);
// 删除这条记录
dao.removeByField(Foo.class, "id", foo.getId());
List<Foo> allrecords = dao.find(new Foo());
Assert.assertTrue(allrecords.isEmpty());
// 删除表
dao.getNoTransactionSession().dropTable(Foo.class);
}
}