0成本 web server 服务器搭建教程:数据库的创建和初始化

由于APPFOG上的免费主机,使得我们有能力0成本搭架移动APP和web站点服务器.

但是 免费的东西总是有诸多限制.比如数据库是在云服务器内部.外部只能通过SF隧道链接.而国内链接速度慢到令人发指.

并且数据库的链接地址 账号 密码 端口 只有在WEB服务器RunTime才能得到.

所以无法直接操作数据库.无法手动创建数据库 创建表.

怎么办? JDBC? 代码太多.开发成本高.hibernate? 那框架没有创建数据库的功能(网上的资料和一些J2EE的群友都问过了 没人知道怎么用hirbernate建立数据库).

没办法 只能两者结合起来用

下面是一些DEMO的代码.

package org.gl.db.hebernate.bean;

import java.io.File;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class test {
	public static void main(String[] args) {
		String dbName = "tv2";
		creatDateBaseIfnoExist(dbName);
		Session session;
		Configuration config = null;
		Transaction tx = null;
		try {
			File file = new File("src/Hibernate.cfg.xml");
			config = new Configuration().configure(file);// 读取数据库连接的默认配置
			config.setProperty("connection.driver_class",
					"com.mysql.jdbc.Driver");
			config.setProperty("connection.url", "jdbc:mysql://localhost:3306/"
					+ dbName);// 动态的修改数据库的名称和地址
			config.setProperty("hibernate.connection.url",
					"jdbc:mysql://localhost:3306/" + dbName);// 这句非常重要,通过DEBUG得知Configuration读取默认配置后会内部复制connection.url到hibernate.connection.url这个参数,两个一并修改
			config.setProperty("connection.username", "root");
			config.setProperty("connection.password", "123456");
			config.setProperty("connection.pool_size", "2");
			config.setProperty("hibernate.dialect",
					"org.hibernate.dialect.MySQLDialect");
			config.setProperty("show_sql", "true");
			config.setProperty("myeclipse.connection.profile", "mysql");
			config.setProperty("hbm2ddl.auto", "update");
			// config.setProperty("hibernate.connection.provider_class","org.hibernate.connection.ProxoolConnectionProvider");
			ServiceRegistryBuilder mServiceRegistryBuilder = new ServiceRegistryBuilder()
					.applySettings(config.getProperties());
			ServiceRegistry resgistry = mServiceRegistryBuilder
					.buildServiceRegistry();
			SessionFactory sessionFactory = config
					.buildSessionFactory(resgistry);
			Program p = new Program();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			session.save(p);
			tx.commit();

		} catch (HibernateException e) {
			e.printStackTrace();
			try {
				tx.rollback();
			} catch (HibernateException e1) {
				e1.printStackTrace();
			}
		} finally {

		}
	}

	private static void creatDateBaseIfnoExist(String DBname) {
		PreparedStatement ps = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection conn = (Connection) DriverManager.getConnection(
					"jdbc:mysql://localhost:3306", "root", "123456");
			ps = (PreparedStatement) conn.prepareStatement("CREATE DATABASE `"
					+ DBname + "` CHARACTER SET utf8");
			ps.execute();
			ps.close();
		} catch (ClassNotFoundException e) {
		} catch (SQLException e) {
		} finally {
		}
	}
}



hibernate 我用的4.1 .动态配置时会有很多蛋疼的奇怪的BUG.找不到类.不支持啥啥啥操作(80%的原因是hibernate不熟悉.其实只看了一个PDF教程).看源代码+DEBUG+百度+google 搞定他们吧.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值