📄 simplecascadetest.java
字号:
package com.free.hibernate.cascade;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.*;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.*;
import com.free.hibernate.bo.Event;
import com.free.hibernate.bo.Location;
import com.free.hibernate.util.HibernateUtil;
/**
* <p>Title: Eclipse Plugin Development</p>
* <p>Description: Free download</p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: Free</p>
* @author gan.shu.man
* @version 1.0
*/
public class SimpleCascadeTest {
static Connection conn;
static Statement st;
public static void main(String[] args) {
setup("create table events(uid bigint(20) PRIMARY KEY not null,name varchar(255),start_date date,duration int(11),location_id bigint(20));");
setup("create table locations(uid bigint(20) PRIMARY KEY not null,name varchar(255),street_address varchar(255),city varchar(255),state varchar(255),zip_code varchar(255));");
HibernateUtil.buildSessionFactory();
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Location location = new Location();
location.setName("USA");
location.getAddress().setStreetAddress("St.");
location.getAddress().setCity("Regina");
location.getAddress().setState("SK");
location.getAddress().setZipCode("22204");
Event event = new Event();
event.setName("Annual Meeting");
event.setDuration(60);
event.setStartDate(createDate(2004, 11, 1));
//设置event关联的主键
event.setLocation(location);
session.save(event);
tx.commit();
session.flush();
session.close();
HibernateUtil.sessionFactory.close();
checkData("select * from events");
checkData("select * from locations");
}
private static Date createDate(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
return calendar.getTime();
}
/**
* 为使用JDBC连接初始化,并执行Sql语句
* */
public static void setup(String sql) {
try {
//加载JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver Loaded.");
//和数据库建立连接
String url = "jdbc:mysql://localhost/hibernate";
conn = DriverManager.getConnection(url, "root", "");
System.out.println("Got Connection.");
//执行Sql语句
st = conn.createStatement();
st.executeUpdate(sql);
} catch (Exception e) {
System.err.println("Got an exception! ");
e.printStackTrace();
}
}
/**
* 检查Sql语句的返回值
* */
public static void checkData(String sql) {
try {
outputResultSet(st.executeQuery(sql));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 打印ResultSet的值
* */
public static void outputResultSet(ResultSet rs) throws Exception {
ResultSetMetaData metadata = rs.getMetaData();
int numcols = metadata.getColumnCount();
String[] labels = new String[numcols];
int[] colwidths = new int[numcols];
int[] colpos = new int[numcols];
int linewidth;
//计算列宽和总宽度
linewidth = 1;
for (int i = 0; i < numcols; i++) {
colpos[i] = linewidth;
//列名
labels[i] = metadata.getColumnLabel(i + 1);
int size = metadata.getColumnDisplaySize(i + 1);
if (size > 30 || size == -1)
size = 30;
int labelsize = labels[i].length();
if (labelsize > size)
size = labelsize;
//列宽
colwidths[i] = size + 1;
//总宽度
linewidth += colwidths[i] + 2;
}
StringBuffer divider = new StringBuffer(linewidth);
StringBuffer blankline = new StringBuffer(linewidth);
for (int i = 0; i < linewidth; i++) {
divider.insert(i, '-');
blankline.insert(i, " ");
}
for (int i = 0; i < numcols; i++)
divider.setCharAt(colpos[i] - 1, '+');
divider.setCharAt(linewidth - 1, '+');
//打印输出线
System.out.println(divider);
StringBuffer line = new StringBuffer(blankline.toString());
line.setCharAt(0, '|');
for (int i = 0; i < numcols; i++) {
int pos = colpos[i] + 1 + (colwidths[i] - labels[i].length()) / 2;
overwrite(line, pos, labels[i]);
overwrite(line, colpos[i] + colwidths[i], " |");
}
//打印列头
System.out.println(line);
System.out.println(divider);
while (rs.next()) {
line = new StringBuffer(blankline.toString());
line.setCharAt(0, '|');
for (int i = 0; i < numcols; i++) {
Object value = rs.getObject(i + 1);
overwrite(line, colpos[i] + 1, value.toString().trim());
overwrite(line, colpos[i] + colwidths[i], " |");
}
//输出数据
System.out.println(line);
}
//打印最后一行
System.out.println(divider);
}
static void overwrite(StringBuffer b, int pos, String s) {
int len = s.length();
for (int i = 0; i < len; i++)
b.setCharAt(pos + i, s.charAt(i));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -