0成本 web server 服务器搭建教程:hirbernate集成所遇问题解决方法列表

对于一个轻量级的WEBserver来说 集成hirbernate的目的是为了节省开发时间.

hirbernate是一个数据操作的框架 同时轻度封装JDBC.并且使用myEclipse的逆向工程插件.基本上操作数据不用写一行代码.

再结合XFIRE或者AXIS2之类的框架 和响应的插件, 创建一个webServer 数据接口 ,从请求的接收 到数据保存,读取 再到返回客户端 基本上不用几行代码.

其中学习和使用hibernate的过程中遇到的问题如下:

问题1:无法创建数据库.

   解决方法:1:使用JDBC 创建.在serverlet 初始化的过程中调用如下代码

private static void creatDateBaseIfnoExist() {
		PreparedStatement ps = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection conn = (Connection) DriverManager.getConnection(
					"jdbc:mysql://"+url+"/", db_username, db_password);
			ps = (PreparedStatement) conn.prepareStatement("CREATE DATABASE `"
					+ dbName + "` CHARACTER SET utf8");
			ps.execute();
			ps.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		} finally {
		}
	}
WEN 

问题2:使用APPFOG的云服务器 无法接触到MYSQL服务器.

这个问题带来的影响是 :

1:不能使用SQL脚本初始化数据库: 解决方法 :额外的创建一个 详情见 http://blog.csdn.net/yeqiuzs/article/details/8738196 按照教程和APPFOG的官网提示操作即可.(登陆的用户为非Root用户 只能添删改查和导入 导出 操作)

2:无法直接获取云服务器数据库的账号密码.和连接地址.因为他是服务器内部的地址实时变化的. 所以无法使用hirbernate的配置文件来初始化session

只能动态去创建. 动态创建的方式似乎只在hirbernate4.1后支持.(我一般喜欢用新的版本的开发包.) 所以只能到官网上去找找例子.

使用的code如下:

public static void rebuildSessionFactory() {
		try {
//			File file = new File("\\WEB-INF\\classes\\hibernate.cfg.xml");
			System.out.println("onRebuildSessionFactory");
			configuration = new Configuration();// 读取数据库连接的默认配置
			configuration.setProperty("connection.driver_class",
					"com.mysql.jdbc.Driver");
			configuration.setProperty("sun.jnu.encoding", "UTF-8");
			configuration.setProperty("file.encoding", "UTF-8");
			
			configuration.setProperty("connection.url", "jdbc:mysql://"+Application.url+"/"
					+ Application.dbName );// 动态的修改数据库的名称和地址
			configuration.setProperty("hibernate.connection.url",
					"jdbc:mysql://"+Application.url+"/" + Application.dbName);// 这句非常重要,通过DEBUG得知Configuration读取默认配置后会内部复制connection.url到hibernate.connection.url这个参数,两个一并修改
			configuration.setProperty("connection.username", Application.db_username);
			configuration.setProperty("hibernate.connection.username", Application.db_username);
			configuration.setProperty("user.name", Application.db_username);

			configuration.setProperty("connection.password", Application.db_password);
			configuration.setProperty("hibernate.connection.password", Application.db_password);
			
			configuration.setProperty("connection.pool_size", "2");
			configuration.setProperty("hibernate.dialect",
					"org.hibernate.dialect.MySQLDialect");
			configuration.setProperty("show_sql", "true");
			configuration.setProperty("myeclipse.connection.profile", "mysql");
			configuration.setProperty("hbm2ddl.auto", "update");
			configuration.addResource("org/gl/db/hebernate/bean/Program.hbm.xml");
			configuration.addResource("org/gl/db/hebernate/bean/Station.hbm.xml");
			serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
			sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		} catch (Exception e) {
			System.err.println("%%%% Error Creating SessionFactory %%%%");
			e.printStackTrace();
		}
	}



上面的代码是使用在HIBERNATE的逆向工程中自动生成的Sessionfactory中 替换那个方法即可 还有需要屏蔽掉 开头的静态代码段.负责 上面的方法动态构建方法不会执行.

如果提示权限错误(('java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)') 拒绝ROOT用户远程连接等 PS: 我在这里被卡住了.使用JDBC可以正常连接 使用HIBETNATE 就有这个问题 重新DEBUG .......得出上面的代码.网上一些人的解决这个问题方法简直是瞎猫去碰死耗子.....)


问题2:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: SELECT command denied to user 'usYunkN0AuxaM'@'10.0.43.194' for table 'program'

解决方法,放弃使用hirbernate

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值