The DAO does create a new connection to the database when it is created. Every method in the DAO also checks the status of the connection, if it isn't open, it re-initializes the connection.
That's actually the way to go.
If you are using Entity Framework in the Data Access Layer, then EF handles the connection to the database. if not and you are using ADO.NET you can let Connection Pooling handle this for you.
Like you are in a web application environment every request to the controllers is unique so, a new connection to the database is the way to go always create new connections and destroy them. Depending if you are using ADO.NET or EF connections are not really created from scratch, they are fetched from a connection pool. There is no performance penalty. Actually that's the best and correct way to go.