title: Unable to open JDBC Connection for DDL execution
body: <p>I get the following error with my spring beans, </p>
  
  <blockquote>
    <p>Error creating bean with name 'employeeRepositoryDAOImple':
    Unsatisfied dependency expressed through method 'setSessionFactory'
    parameter 0; nested exception is
    org.springframework.beans.factory.BeanCreationException: Error
    creating bean with name 'sessionFactory' defined in class path
    resource [config.xml]: Invocation of init method failed; nested
    exception is org.hibernate.exception.JDBCConnectionException: Unable
    to open JDBC Connection for DDL execution</p>
  </blockquote>
  
  <p>Client.java </p>
  
  <pre><code>public class Client {
      public static void main(String arg[]) {
  
          AbstractApplicationContext ctx = new     ClassPathXmlApplicationContext("config.xml");
          EmployeeService employeeService = (EmployeeService) ctx.getBean("empoyeService");
  
          Employee employee1 = new Employee(100001, "Alex", "Account");
          Employee employee2 = new Employee(100002, "Sam", "HR");
  
          employeeService.insert(employee1);
          employeeService.insert(employee2);
          System.out.println("Records are successfully added..");
          ctx.close();
  
      }
  }
  </code></pre>
  
  <p>Entity.java</p>
  
  <pre><code>@Entity
  public class Employee {
  @Id
  private int empId;
  private String empName;
  private String department;
  public Employee() {
      super();
  }
  public Employee(int empId,String empName,String deptName)
  {
      super();
      this.empId=empId;
      this.empName=empName;
      this.department=deptName;
  }
  
  public int getEmpId() {
      return empId;
  }
  public void setEmpId(int empId) {
      this.empId = empId;
  }
  public String getEmpName() {
      return empName;
  }
  public void setEmpName(String empName) {
      this.empName = empName;
  }
  public String getDepartment() {
      return department;
  }
  public void setDepartment(String department) {
      this.department = department;
  }
  @Override
  public String toString()
  {
      return "Employee Empid="+empId+" empName="+empName+" department="+department;
  }
  
  
  }
  </code></pre>
  
  <p>EmployeeService.java</p>
  
  <pre><code>@Service("empoyeService")
  public class EmployeeServiceImpl implements EmployeeService {
  @Autowired
  EmployeeRepository emprepo;
  @Override
  public void insert(Employee employee) {
      // TODO Auto-generated method stub
      emprepo.insert(employee);
  }
  
  @Override
  public int delete(int empid) {
      // TODO Auto-generated method stub
      return emprepo.delete(empid);
  }
  
  }
  EmployeeRepositoryDAOImple.java
     @Repository
     public class EmployeeRepositoryDAOImple implements EmployeeRepository{
  private SessionFactory sessionFactory;
  @Autowired
  public void setSessionFactory(SessionFactory sessionFactory) {
      this.sessionFactory = sessionFactory;
  }
  @Override
  public void insert(Employee employee) {
      // TODO Auto-generated method stub
      Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      session.save(employee);
      tx.commit();
      session.close();
  
  }}
  </code></pre>
  
  <p>Config.xml</p>
  
  <pre><code>&lt;beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd"&gt;
  &lt;!-- Define Service and Repository beans using auto scan feature of         Spring --&gt;
  &lt;context:component-scan base-package="com.orm.employee.dao,com.orm.employee.Service" /&gt;
  
  &lt;!-- Define DataSource bean using DriverManagerDataSource class of Spring --&gt; 
  &lt;bean id="myDataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;
      &lt;property name="driverClassName" value="com.mysql.jdbc.Driver" /&gt;
      &lt;property name="url" value="jdbc:mysql://localhost:3306/myschema"&gt;&lt;/property&gt;
      &lt;property name="username" value="root"&gt;&lt;/property&gt;
      &lt;property name="password" value="xxxx"&gt;&lt;/property&gt;
  &lt;/bean&gt;
  &lt;!-- Define sessionFactory bean of Spring class --&gt;
  &lt;bean id="sessionFactory"
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"&gt;
      &lt;property name="dataSource" ref="myDataSource" /&gt;
      &lt;property name="packagesToScan" value="com.orm.employee.dao" /&gt;
      &lt;property name="hibernateProperties"&gt;
          &lt;value&gt;
              hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
              hibernate.hbm2ddl.auto=update
  
          &lt;/value&gt;
      &lt;/property&gt;
  &lt;/bean&gt;
  </code></pre>
  
  <p></p>
  
  <pre><code>Exception
  SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  SLF4J: Defaulting to no-operation (NOP) logger implementation
  SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  log4j:WARN No appenders could be found for logger (org.jboss.logging).
  log4j:WARN Please initialize the log4j system properly.
  log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  Exception in thread "main"      org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'employeeRepositoryDAOImple': Unsatisfied dependency expressed through method 'setSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [config.xml]: Invocation of init method failed; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:676)
  at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
  at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
  at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:144)
  at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:85)
  at com.orm.employee.client.Client.main(Client.java:14)
  Caused by: org.springframework.beans.factory.BeanCreationException:      Error creating bean with name 'sessionFactory' defined in class path resource [config.xml]: Invocation of init method failed; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
  at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
  at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1237)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1164)
  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:668)
  ... 15 more
  Caused by: org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
  at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48)
  at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
  at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
  at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
  at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:69)
  at org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcConnection(ImprovedExtractionContextImpl.java:60)
  at org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcDatabaseMetaData(ImprovedExtractionContextImpl.java:67)
  at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTables(InformationExtractorJdbcDatabaseMetaDataImpl.java:329)
  at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:120)
  at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:65)
  at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)
  at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)
  at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)
  at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
  at org.hibernate.internal.SessionFactoryImpl.&lt;init&gt;(SessionFactoryImpl.java:310)
  at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)
  at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
  at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
  at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:615)
  at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:599)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1804)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1741)
  ... 25 more
  Caused by:     com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  at com.mysql.jdbc.Util.handleNewInstance(Util.java:353)
  at com.mysql.jdbc.Util.getInstance(Util.java:336)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:985)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2938)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:855)
  at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3337)
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1217)
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:1930)
  at com.mysql.jdbc.Connection.&lt;init&gt;(Connection.java:716)
  at com.mysql.jdbc.JDBC4Connection.&lt;init&gt;(JDBC4Connection.java:46)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  at com.mysql.jdbc.Util.handleNewInstance(Util.java:353)
  at com.mysql.jdbc.Connection.getInstance(Connection.java:295)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
  at java.sql.DriverManager.getConnection(DriverManager.java:664)
  at java.sql.DriverManager.getConnection(DriverManager.java:208)
  at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:154)
  at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:145)
  at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:205)
  at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:169)
  at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
  at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
  at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43)
  ... 42 more
  </code></pre>